import numpy as np

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

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

array增加数 python python array函数参数_python

一、创建数组

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

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

(1)np.array()

array增加数 python python array函数参数_数组_02

array增加数 python python array函数参数_数组_03

 (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()

array增加数 python python array函数参数_数据类型_04

array增加数 python python array函数参数_python_05

2.np.linspace() 

 

array增加数 python python array函数参数_一维数组_06

注意

1.endpoint默认为True:

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

2.dtype

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

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

array增加数 python python array函数参数_一维数组_07

 (3)np.logspace()

array增加数 python python array函数参数_一维数组_08

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

1.endpoint默认为True:

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

2.dtype

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

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

3.base默认为10:

相当于10**np.linspace()

array增加数 python python array函数参数_一维数组_09

 (4)np.identity()

array增加数 python python array函数参数_array增加数 python_10

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

array增加数 python python array函数参数_array增加数 python_11

 

array增加数 python python array函数参数_array增加数 python_12

 (6)np.diag()

array增加数 python python array函数参数_一维数组_13

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

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

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

array增加数 python python array函数参数_一维数组_14

 三、修改数组

1.np.append()

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

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

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

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

array增加数 python python array函数参数_array增加数 python_15

 

array增加数 python python array函数参数_一维数组_16

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

 

array增加数 python python array函数参数_array增加数 python_17

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

 

array增加数 python python array函数参数_array增加数 python_18

 2.np.insert()

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

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

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

 

array增加数 python python array函数参数_数据类型_19

 3.切片

array增加数 python python array函数参数_python_20

array增加数 python python array函数参数_python_21

四、数组的运算

1.数组与标量

array增加数 python python array函数参数_一维数组_22

2.数组与数组

等长数组:对应元素相加

不等长数组:广播

array增加数 python python array函数参数_数据类型_23

array增加数 python python array函数参数_数据类型_24

 3.数组的内积

array增加数 python python array函数参数_数组_25

 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.布尔运算 ><== &| np.all() np.any() np.sum()

array增加数 python python array函数参数_数据类型_26

 五、数组排序

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

array增加数 python python array函数参数_数组_27

array增加数 python python array函数参数_array增加数 python_28

axis=0:列的元素改变位置,垂直方向计算

axis=1:行的元素改变位置,水平方向计算

 

array增加数 python python array函数参数_一维数组_29

array增加数 python python array函数参数_数组_30

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

array增加数 python python array函数参数_一维数组_31

 # _表示上一条语句

array增加数 python python array函数参数_数据类型_32

六、赋值、深复制、浅复制(视图)

赋值:对同一对象新建了一个引用

浅复制:共享数据,保存在base数组中(改变数据会互相影响)

深复制:新建完全不同的两个对象,除了初始数据相同

array增加数 python python array函数参数_array增加数 python_33

 

array增加数 python python array函数参数_数组_34

array增加数 python python array函数参数_数组_35


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

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

array增加数 python python array函数参数_python_36

在python标准库中,

对list对象——

赋值相当于新建引用(始终为同一变量),

array增加数 python python array函数参数_array增加数 python_37

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

array增加数 python python array函数参数_数据类型_38

 

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

array增加数 python python array函数参数_python_39

跟 int对象一样 

array增加数 python python array函数参数_array增加数 python_40


七、访问数组

1.下标、切片

array增加数 python python array函数参数_array增加数 python_41

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]

array增加数 python python array函数参数_数组_42

array增加数 python python array函数参数_array增加数 python_43

array增加数 python python array函数参数_数组_44

  

 

array增加数 python python array函数参数_数据类型_45

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

1. x.shape x.size

x.shape:返回形状的元组

x.size:元素总个数

array增加数 python python array函数参数_一维数组_46

 2. x.reshape()

array增加数 python python array函数参数_数组_47

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

array增加数 python python array函数参数_数据类型_48

注意:array不能引用或被引用

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

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

 

array增加数 python python array函数参数_数据类型_49

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

array增加数 python python array函数参数_数组_50

array增加数 python python array函数参数_一维数组_51