我有一个数百个10x10阵列的列表,我想将它们堆叠成一个Nx10x10阵列。起初我尝试了一个简单的
newarray = np.array(mylist)
但是返回的是“ValueError:使用序列设置数组元素。”
然后我找到了dstack()的在线文档,看起来很完美:“......这是将2D数组(图像)堆叠成单个3D数组进行处理的简单方法。”这正是我想要做的。然而,
newarray = np.dstack(mylist)
告诉我“ValueError:数组维度必须同意,除了d_0”,这很奇怪,因为我的所有数组都是10x10。我想也许问题是dstack()需要一个元组而不是一个列表,但是
newarray = np.dstack(tuple(mylist))
产生了相同的结果。
此时我花了大约两个小时在这里和其他地方搜索,以找出我做错了什么和/或如何正确地解决这个问题。我甚至尝试将我的数组列表转换为列表列表然后再转换为3D数组,但这也不起作用(我最终得到了数组列表的列表,接着是“设置数组元素”作为序列“再次出错。”
任何帮助都将不胜感激。
答案 0 :(得分:24)
newarray = np.dstack(mylist)
应该有效。例如:
import numpy as np
# Here is a list of five 10x10 arrays:
x=[np.random.random((10,10)) for _ in range(5)]
y=np.dstack(x)
print(y.shape)
# (10, 10, 5)
# To get the shape to be Nx10x10, you could use rollaxis:
y=np.rollaxis(y,-1)
print(y.shape)
# (5, 10, 10)