将2D numpy数组列表转换为一个3D numpy数组?

Jam*_*mes 11 python numpy

我有一个数百个10x10阵列的列表,我想将它们堆叠成一个Nx10x10阵列.起初我试过一个简单的

newarray = np.array(mylist)

但是返回的是"ValueError:使用序列设置数组元素".

然后我找到了dstack()的在线文档,它看起来很完美:"......这是将2D数组(图像)堆叠成单个3D数组进行处理的简单方法." 这正是我想要做的.然而,

newarray = np.dstack(mylist)
Run Code Online (Sandbox Code Playgroud)

告诉我"ValueError:数组维度必须同意,除了d_0",这是奇怪的,因为我的所有数组都是10x10.我想也许问题是dstack()期望一个元组而不是一个列表,但是

newarray = np.dstack(tuple(mylist))
Run Code Online (Sandbox Code Playgroud)

产生了同样的结果.

在这一点上,我花了大约两个小时在这里和其他地方搜索,以找出我做错了什么和/或如何正确地解决这个问题.我甚至尝试将我的数组列表转换为列表列表然后再转换为3D数组,但这也不起作用(我最终得到了数组列表的列表,接着是"设置数组元素"作为序列"再次出错".

任何帮助,将不胜感激.

unu*_*tbu 25

newarray = np.dstack(mylist)
Run Code Online (Sandbox Code Playgroud)

应该管用.例如:

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)
Run Code Online (Sandbox Code Playgroud)