1.1 reshape不改变值改变数组形状
import numpy as np
a = np.arange(10).reshape(2,5) #[[0 1 2 3 4] [5 6 7 8 9]]
b = a.reshape(10) #[0 1 2 3 4 5 6 7 8 9]
c=a.flatten() #[0 1 2 3 4 5 6 7 8 9]
a.flatten():将一个多维数组展开变成一个一维数组。不清楚数组中有多少个数,仍然想转为一维时可以使用。
1.2 数组计算
① 形状一样的数组a、b,可以直接使用a+b或a-b,对应位置的数字进行计算
import numpy as np
a = np.arange(10).reshape(2,5)
b = np.random.randn(2,5)
print(a+b)
print(a-b)
② 一维和多维数组,在某一维度上形状一样,仍然按位置计算
import numpy as np
a = np.arange(6)
b = np.arange(24).reshape(4,6)
print(a) #[0 1 2 3 4 5]
print(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]]
print(b-a) #[[0 0 0 0 0 0][6 6 6 6 6 6][12 12 12 12 12 12][18 18 18 18 18 18]]


1.3 广播规则
广播原则:如果两个数组的后缘维度(从末尾开始算起的维度)的轴长相符,或其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。
① 两个数组的维数不相等,但是它们的后缘维度的轴长相符

② 数组维度相同,其中有个轴为1

③ 上面两种机制相结合
(3,2,2)与(2,1)是可以相加的
import numpy as np
a = np.arange(12).reshape(3,2,2)
b = np.arange(2).reshape(2,1)
>>> [[[ 0 1]
[ 3 4]]
[[ 4 5]
[ 7 8]]
[[ 8 9]
[11 12]]]





