[英]How to convert 3D array to a list of 2D arrays in python?
我想将 3D 数组(例如大小 = 3x3x4)转换为 3 个(3x4)arrays 的列表。 else块中的 3D 数组A与if块中的类型不同。
我尝试了 tolist() function,但它将 3D 数组转换为列表列表,这是不需要的。
X = np.random.randn(3, 3, 3)
for R in range(1,10):
N = len(X.shape)
B = ()
C = []
for i in range(N):
B += svd(X[i])
C.append(B[3*i])
C = np.array(C)
if R <= np.shape(C)[2]:
A = C[:,:,:R]
else:
A = np.concatenate((C[:,:,:np.shape(C)[2]],np.zeros((3,3,1))),axis=2)
理想情况下, A = [np.random.randn(In, R) for In in X.shape]
。 但是我通过将X的左奇异向量分配给A来修改这一步。
numpy 数组是可迭代的,您可以轻松地将其转换为列表:
lst = list(A)
演示:
>>> arr = np.arange(8).reshape(2,2,2)
>>> arr
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
>>> list(arr)
[array([[0, 1],
[2, 3]]), array([[4, 5],
[6, 7]])]
要将 3D 数组转换为二维 arrays 列表,只需使用list
:
X = np.random.randn(3, 3, 3)
list(X)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.