1.视图变维: 返回一个具有新维度的新数组对象,且数据共享。
reshape:重新设置维度
ravel:将复杂的数组拆解为一个维度的数组
a = np.arange(1, 9) print(a) # [1 2 3 4 5 6 7 8] c = a.reshape(2, 2, 2) print(c) # [[[1 2] # [3 4]] # # [[5 6] # [7 8]]] d = c.ravel() print(d) # [1 2 3 4 5 6 7 8]
2.复制数组:返回一个具有新维度的新数组对象,数据独立
e = c.flatten() print(e) # [1 2 3 4 5 6 7 8]
然后在进行一下测试,看下结果,你会发现e数组没有发生变化 ,其他的都发生了变化
a += 10 print(a, c, d, e, sep=" ") # [11 12 13 14 15 16 17 18] # [[[11 12] # [13 14]] # # [[15 16] # [17 18]]] # [11 12 13 14 15 16 17 18] # [1 2 3 4 5 6 7 8]
3.就地变维 : 在原数组对象之上,改变其维度,不返回新数组
xxx.shape = ...
a.shape = (2, 2, 2) # [[[11 12] # [13 14]] # # [[15 16] # [17 18]]]
xxx.resize(...)
a.resize(4, 2) # [[11 12] # [13 14] # [15 16] # [17 18]]