numpy数组的计算

1、数组的形状

查看数组的形状:

import numpy as np

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

(2, 5)

二行五列

改变数组的形状:

import numpy as np

a = np.array([[1, 2, 3, 4, 5],
              [5, 6, 7, 8, 9]])
print(a.reshape(5, 2))  # 这里注意改变形状所对应的元素个数必须一样 5*2=10个

[[1 2]
[3 4]
[5 5]
[6 7]
[8 9]]

再比如:

import numpy as np

a = np.arange(24)
print(a.reshape(2, 3, 4))  # 这里注意改变形状所对应的元素个数必须一样 2*3*4=24个

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

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

转化为一维度数组:

import numpy as np

a = np.arange(24)
print(a.flatten())

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

2、数组和数的计算

numpy具有广播机制,在运算过程中,加减乘除的值被广播到所有元素上

广播机制的理解:我通过广播说一句话,大家全部听见来进行我说的操作

数组与数的内容中:乘除和线代内容差不多(除法稍微注意即可),但加减略有不同

import numpy as np

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

[[ 2 3 4]
[ 5 6 7]
[ 8 9 10]]

关于数组与数组的加减乘除中,只需要记住:

image.png

比如:

import numpy as np

a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])  # 3*3

b = np.array([[9, 8, 7]])  # 1*3
print(a*b)

[[ 9 16 21]
[36 40 42]
[63 64 63]]

import numpy as np

a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])  # 3*3

b = np.array([[9, 8, 7],
              [6, 5, 4]])  # 2*3
print(a+b)

ValueError: operands could not be broadcast together with shapes (3,3) (2,3)

3、轴

了解即可

在numpy中可以理解为方向,使用0,1,2...数字表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2,2)),有0轴和1轴,对于三维数组(shape(2,2, 3)),有0,1,2轴

image.png

image.png

原文地址:https://www.cnblogs.com/wangzheming35/p/15344762.html