本章主要介绍的是ndarray数组的操作和运算!

一、 ndarray数组的操作:

操作是指对数组的索引和切片。索引是指获取数组中特定位置元素的过程;切片是指获取数组中元素子集的过程。

1、一维数组的索引和切片与python的列表类似:

 索引:

import numpy as np

a = np.array([9, 8, 7, 6, 5])
print(a[2])
7

切片:起始编号:终止编号:(不含):步长  三元素用冒号分割

import numpy as np
a = np.array([9, 8, 7, 6, 5])
print(a[1:4:2])
[8 6]

2、多维数组的索引和切片:

索引:

import numpy as np
a = np.arange(24).reshape((2, 3, 4))
print(a)
print(a[1, 2, 3])
print(a[0, 1, 2])
print(a[-1, -2, -3])
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

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

切片:选取一个维度用:

import numpy as np
a = np.arange(24).reshape((2, 3, 4))
print(a)
print(a[:, 1, -3])              
print(a[:, 1:3, :])
print(a[:, :, ::2])
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
[ 5 17]
[[[ 4  5  6  7]
  [ 8  9 10 11]]

 [[16 17 18 19]
  [20 21 22 23]]]
[[[ 0  2]
  [ 4  6]
  [ 8 10]]

二、ndarray数组的运算:

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

import numpy as np
a = np.arange(24).reshape((2, 3, 4))
print(a)
print(a.mean())
print(a / a.mean())

[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
11.5
[[[0.         0.08695652 0.17391304 0.26086957]
  [0.34782609 0.43478261 0.52173913 0.60869565]
  [0.69565217 0.7826087  0.86956522 0.95652174]]

 [[1.04347826 1.13043478 1.2173913  1.30434783]
  [1.39130435 1.47826087 1.56521739 1.65217391]
  [1.73913043 1.82608696 1.91304348 2.        ]]]

 2、Numpy的一元函数:

对ndarray中的数据执行元素级运算的函数:

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

 

 

 

 

 

 

 

 

 

 

import numpy as np
a = np.arange(24).reshape((2, 3, 4))
print(np.square(a))
a = np.sqrt(a)
print(a)
print(np.modf(a))

[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
11.5
[[[0.         0.08695652 0.17391304 0.26086957]
  [0.34782609 0.43478261 0.52173913 0.60869565]
  [0.69565217 0.7826087  0.86956522 0.95652174]]

 [[1.04347826 1.13043478 1.2173913  1.30434783]
  [1.39130435 1.47826087 1.56521739 1.65217391]
  [1.73913043 1.82608696 1.91304348 2.        ]]]
[[[  0   1   4   9]
  [ 16  25  36  49]
  [ 64  81 100 121]]

 [[144 169 196 225]
  [256 289 324 361]
  [400 441 484 529]]]
[[[0.         1.         1.41421356 1.73205081]
  [2.         2.23606798 2.44948974 2.64575131]
  [2.82842712 3.         3.16227766 3.31662479]]

 [[3.46410162 3.60555128 3.74165739 3.87298335]
  [4.         4.12310563 4.24264069 4.35889894]
  [4.47213595 4.58257569 4.69041576 4.79583152]]]
(array([[[0.        , 0.        , 0.41421356, 0.73205081],
        [0.        , 0.23606798, 0.44948974, 0.64575131],
        [0.82842712, 0.        , 0.16227766, 0.31662479]],

       [[0.46410162, 0.60555128, 0.74165739, 0.87298335],
        [0.        , 0.12310563, 0.24264069, 0.35889894],
        [0.47213595, 0.58257569, 0.69041576, 0.79583152]]]), array([[[0., 1., 1., 1.],
        [2., 2., 2., 2.],
        [2., 3., 3., 3.]],

       [[3., 3., 3., 3.],
        [4., 4., 4., 4.],
        [4., 4., 4., 4.]]]))

3、Numpy的二元函数:

Numpy的二元函数
+-*/ 两个数组各元素进行对应运算
np.maximum(x,y) np.fmax() np.minimum(x,y) np.fmin() 元素级的最大值/最小值计算
np.mod(x,y) 元素级的模运算
np.copysign(x,y) 将数组y中各元素值的符号赋值给数组x对应元素
><>=<===!= 算术比较,产生布尔型数组

 

 

 

 

 

 

import numpy as np
a = np.arange(24).reshape((2, 3, 4))
b = np.sqrt(a)
print(np.maximum(a, b))
print(a > b)

[[[ 0.  1.  2.  3.]
  [ 4.  5.  6.  7.]
  [ 8.  9. 10. 11.]]

 [[12. 13. 14. 15.]
  [16. 17. 18. 19.]
  [20. 21. 22. 23.]]]
[[[False False  True  True]
  [ True  True  True  True]
  [ True  True  True  True]]

 [[ True  True  True  True]
  [ True  True  True  True]
  [ True  True  True  True]]]

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文为lsyb-python原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lsyb-python/p/11900845.html