热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Python】numpy——数组array

importnumpyasnpNumpy的主要对象是同质的多维数组array为了可视化切片过程,我们把二维数组的垂直方向定义为axis0轴,水平方向

import numpy as np

Numpy的主要对象是同质的多维数组array

为了可视化切片过程,我们把二维数组的垂直方向定义为 axis 0 轴,水平方向为 axis 1 轴。

一、创建数组

创建Numpy数组一般有三种方法:

(1)通过传入可迭代对象创建,我将之称为基本方法np.array()
(2)使用Numpy内部功能函数,内部方法
(3)使用特殊的库函数,特殊方法


(1)np.array()


 (2)np.ones()、np.zeros()、np.eye()、np.empty()


函数zeros创建一个都是0的数组,

函数ones创建一个都是1的数组,

函数empty创建一个初始内容是0或者垃圾值的数组,这取决于内存当时的状态。

默认情况下,创建的数组的数据类型为float64

np.zeros(3)
np.zeros( (3,4) )
np.ones( (2,3,4), dtype=np.int16 )np.empty( (2,3) ) # 根据当前内存状态的不同,可能会返回未初始化的垃圾数值,不安全。
np.full((3,4), 2.2) # 创建一个全部由2.22组成的数组

 (3)特殊方法:


1.np.arange()

2.np.linspace() 

 

注意

1.endpoint默认为True:

np.linspace()默认是包含终点的 [start,end]

2.dtype

如果未给出数据类型,则从开始和停止推断数据类型。

推断出的数据类型永远不会是整数;即使参数将生成整数数组,也会选择float。

 (3)np.logspace()

参数设置类似于np.linspace()

1.endpoint默认为True:

np.logspace()默认是包含终点的 [start,end]

2.dtype

如果未给出数据类型,则从开始和停止推断数据类型。

推断出的数据类型永远不会是整数;即使参数将生成整数数组,也会选择float。

3.base默认为10:

相当于10**np.linspace()

 (4)np.identity()

 (5)np.random——    .randint()    .rand()    .stardard_normal()

 

 (6)np.diag()

二、测试两数组是否相同(相近)——np.isclose(),np.allclose()

isclose(),allclose()函数来测试两个数组中对应位置上的元素在允许的范围内是否相等。并可以接收绝对误差参数和相对误差参数。

  • allclose():返回单个TrueFalse
  • isclose():返回若干True/False的列表

 三、修改数组

1.np.append()


返回新数组,不影响原来的数组

注意一维数组和多维数组追加的区别:

n维数组要保持维度,只能追加n维数组,不然报错;

多维数组追加一维数组后,会变成一维数组(axis=None,先展平)

 

ndarray没有这个方法,而是numpy下的: 

 

多维数组的行追加、列追加和多维追加(axis=0,axis=1……):

 

 2.np.insert()


返回新数组,不影响原来的数组

注意一维数组和多维数组插入的区别:

axis=None时,会先将数组展平

 

 3.切片

四、数组的运算

1.数组与标量

2.数组与数组


等长数组:对应元素相加

不等长数组:广播

 3.数组的内积

 4.数学函数

x = np.array(([1, 2, 3], [4, 5, 6], [7, 8, 9]))
print(x)
print(np.sin(x)) # 一维数组中所有元素求正弦值
print(np.cos(x)) # 二维数组中所有元素求余弦值
print(np.round(np.cos(x))) # 四舍五入
print(np.ceil(x/2)) # 向上取整

 5.布尔运算 ><&#61;&#61; &| np.all() np.any() np.sum()

 五、数组排序

1.ndarray.sort(),numpy.sort()

axis&#61;0&#xff1a;列的元素改变位置&#xff0c;垂直方向计算

axis&#61;1&#xff1a;行的元素改变位置&#xff0c;水平方向计算

 

 2.np.argsort(),np.argmax(),np.argmin()

 # _表示上一条语句


六、赋值、深复制、浅复制(视图&#xff09;

赋值&#xff1a;对同一对象新建了一个引用

浅复制&#xff1a;共享数据&#xff0c;保存在base数组中&#xff08;改变数据会互相影响&#xff09;

深复制&#xff1a;新建完全不同的两个对象&#xff0c;除了初始数据相同

 



numpy中的array只有赋值受到改变形状的影响&#xff1b;

赋值、切片、视图均受到改变值的影响


在python标准库中&#xff0c;

对list对象——

赋值相当于新建引用(始终为同一变量)&#xff0c;

切片相当于浅拷贝(只拷贝外层元素&#xff0c;内部嵌套元素通过引用&#xff0c;而不是独立分配内存)

 

切片不会受到改变值的影响

跟 int对象一样 



七、访问数组

1.下标、切片

a[x1][y1]
a[x1,y1] # 输出a[x1][y1]
a[[x1,x2,x3],[y1,y2,y3]] # 输出a[x1][y1],a[x2][y2],a[x3][y3]
a[x1:x3,y1:y3] # 输出a[x1][y1:y3],a[x2][y1:y3]# 输出a[x1][y1],a[x1][y2],a[x2][y1],a[x2][y2]a[x1] # 输出a[x1][:]
a[[x1,x2,x3]] # 输出a[x1][:],a[x2][:],a[x3][:]
a[:,[y1,y2,y3]] # 输出a[:][y1],a[:][y2],a[:][y3]

  

 


 八、改变形状 x.shape x.reshape() x.resize()

1. x.shape x.size


x.shape&#xff1a;返回形状的元组

x.size&#xff1a;元素总个数

 2. x.reshape()

 3. x.resize() np.resize() 

注意&#xff1a;array不能引用或被引用

ValueError: cannot resize an array that references or is referenced ...

 np.resize()则没有这个要求

 

九、查找、过滤数组元素  np.where() np.piecewise()


推荐阅读
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList优于LinkedList,因为Ar ... [详细]
author-avatar
Happy_Kelly尊荣
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有