数据可视化学习笔记之Numpy2

Numpy的数组对象:ndarray

文章目录

  • Numpy的数组对象:ndarray
    • 数组的索引与切片
    • ndarray数组的运算
      • 数组与标量之间的运算
      • NumPy一元函数
      • NumPy二元函数

数组的索引与切片

索引:获取数组中特定位置元素的过程。
切片:获取数组元素子集的过程

  1. 一维数组的索引和切片:与Python的列表类似。
In [2]: a = np.array([2,3,6,4,8])

In [3]: a[2]
Out[3]: 6

In [4]: a[1:4:2]	
Out[4]: array([3, 4])

起始编号: 终止编号(不含): 步长,3元素冒号分割

  1. 多维数组的索引:
    注意是从0开始
In [5]: a = np.arange(12).reshape((2,3,2))

In [6]: a
Out[6]:
array([[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],

       [[ 6,  7],
        [ 8,  9],
        [10, 11]]])

In [7]: a[1,0,1]
Out[7]: 7

In [8]: a[-1,-2,-1]
Out[8]: 9

In [9]: a[1,2,1]
Out[9]: 11
  1. 多维数组的切片:
    : 空冒号为选取整个维度
In [11]: a = np.arange(24).reshape((2,3,4))

In [12]: a
Out[12]:
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

In [13]: a[:,1,3]
Out[13]: array([ 7, 19])

In [14]: a[:,0:2,1:3]
Out[14]:
array([[[ 1,  2],
        [ 5,  6]],

       [[13, 14],
        [17, 18]]])

每个维度可以使用步长跳跃切片:

In [15]: a[:,:,::2]
Out[15]:
array([[[ 0,  2],
        [ 4,  6],
        [ 8, 10]],

       [[12, 14],
        [16, 18],
        [20, 22]]])

ndarray数组的运算

数组与标量之间的运算

数组与标量之间的运算作用于数组的每一个元素

In [16]: a = np.arange(12).reshape((2,3,2))

In [17]: a
Out[17]:
array([[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],

       [[ 6,  7],
        [ 8,  9],
        [10, 11]]])

In [18]: a.mean()
Out[18]: 5.5

In [19]: a/a.mean()
Out[19]:
array([[[0.        , 0.18181818],
        [0.36363636, 0.54545455],
        [0.72727273, 0.90909091]],

       [[1.09090909, 1.27272727],
        [1.45454545, 1.63636364],
        [1.81818182, 2.        ]]])

NumPy一元函数

函数 说明
np.abs(x) np.fabs(x) 计算数组各元素的绝对值
np.sqrt(x) 计算数组各元素的平方根
np.square(x) 计算数组各元素的平方
np.log(x) np.log10(x)
np.log2(x) 计算数组各元素的自然对数、10底对数和2底对数
np.ceil(x) np.floor(x) 计算数组各元素的ceiling值或floor值
np.rint(x) 计算数组各元素的四舍五入值
np.modf(x) 将数组各元素的小数和整数部分以两个独立数组形式返回
np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x) 计算数组各元素的普通型和双曲型三角函数
np.exp(x) 计算数组各元素的指数值
np.sign(x) 计算数组各元素的符号值,1(+), 0, ‐1(‐)
In [21]: a = np.arange(12).reshape((2,2,3))
In [23]: np.square(a)
Out[23]:
array([[[  0,   1,   4],
        [  9,  16,  25]],

       [[ 36,  49,  64],
        [ 81, 100, 121]]], dtype=int32)
In [29]: a = np.sqrt(a)

In [30]: a
Out[30]:
array([[[0.        , 1.        , 1.41421356],
        [1.73205081, 2.        , 2.23606798]],

       [[2.44948974, 2.64575131, 2.82842712],
        [3.        , 3.16227766, 3.31662479]]])
        

In [31]: np.modf(a)
Out[31]:
(array([[[0.        , 0.        , 0.41421356],
         [0.73205081, 0.        , 0.23606798]],

        [[0.44948974, 0.64575131, 0.82842712],
         [0.        , 0.16227766, 0.31662479]]]),
 array([[[0., 1., 1.],
         [1., 2., 2.]],

        [[2., 2., 2.],
         [3., 3., 3.]]]))       

NumPy二元函数

函数 说明
+ ‐ * / ** 两个数组各元素进行对应运算
np.maximum(x,y) np.fmax() np.minimum(x,y) np.fmin() 元素级的最大值/最小值计算
np.mod(x,y) 元素级的模运算
np.copysign(x,y) 将数组y中各元素值的符号赋值给数组x对应元素
> < >= <= == != 算术比较,产生布尔型数组
In [32]: a =np.arange(12).reshape((2,3,2))

In [33]: b = np.sqrt(a)
In [34]: a
Out[34]:
array([[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],

       [[ 6,  7],
        [ 8,  9],
        [10, 11]]])

In [35]: b
Out[35]:
array([[[0.        , 1.        ],
        [1.41421356, 1.73205081],
        [2.        , 2.23606798]],

       [[2.44948974, 2.64575131],
        [2.82842712, 3.        ],
        [3.16227766, 3.31662479]]]
        
In [36]: np.maximum(a,b)
Out[36]:
array([[[ 0.,  1.],
        [ 2.,  3.],
        [ 4.,  5.]],

       [[ 6.,  7.],
        [ 8.,  9.],
        [10., 11.]]])
       
In [37]: a > b
Out[37]:
array([[[False, False],
        [ True,  True],
        [ True,  True]],

       [[ True,  True],
        [ True,  True],
        [ True,  True]]]
        

你可能感兴趣的:(Python学习笔记)