改变维度

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]]
原文地址:https://www.cnblogs.com/zengsf/p/10060682.html