import numpy as np
i = np.array( [ [0,1],[1,2] ] )
j = np.array( [ [2,1],[3,3] ] )
k = np.array( [ [2,1],[3,3] ] )
l = np.array( [ [2,1],[3,3] ] )
l1 = np.array( [ [2,1],[3,3] ] )
l2 = np.array( [ [2,1],[3,3] ] )
l3 = np.array( [ [2,1],[3,3] ] )
l4 = np.array( [ [2,1],[3,3] ] )
a = [i, j, k, l, l1, l2, l3, l4]
b = []
b.append(a)
b.append(np.array( [ [2,1],[3,3] ] ))
b.append(np.array( [ [2,1],[3,3] ] ))
b.append(np.array( [ [2,1],[3,3] ] ))
b.append(np.array( [ [2,1],[3,3] ] ))
b.append(np.array( [ [2,1],[3,3] ] ))
arr = np.array(b)
print np.shape(b)
c = np.reshape(arr, (13, 2 ,2))
print np.shape(c)
当我尝试此错误时,我会收到此错误消息:
ValueError: total size of new array must be unchanged
我如何在列表中重塑元素。我无法将数组的 len()
在列表中重塑。
当您打印出arr
时,您会得到这样的东西:
array([ [array([[0, 1],
[1, 2]]), array([[2, 1],
[3, 3]]), array([[2, 1],
[3, 3]]), array([[2, 1],
[3, 3]]), array([[2, 1],
[3, 3]]), array([[2, 1],
[3, 3]]), array([[2, 1],
[3, 3]]), array([[2, 1],
[3, 3]])],
[[2 1]
[3 3]], [[2 1]
[3 3]], [[2 1]
[3 3]], [[2 1]
[3 3]],
[[2 1]
[3 3]]], dtype=object)
您可能会明白这不能重塑。它是object
的NP阵列。其中的条目恰好是NP阵列。
但是要具有一个可重塑的实体,您需要在其中具有一些固定尺寸的NP阵列,其中具有普通类型(int,float,...)。您的输入建筑物(append()
调用)构建无法重塑的东西。
我想您替换这些行时可能会得到想要的东西:
b = []
b.append(a)
通过此行:
b = a[:]
然后我可以在其余的之后轻松执行此操作:
c = np.reshape(arr, (13, 2 ,2))
和 c
将是:
array([[[0, 1],
[1, 2]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]],
[[2, 1],
[3, 3]]])