2

我有一个二维 numpy 数组的列表。作为测试,请考虑以下列表:

lst = [np.arange(10).reshape(5,2)]*10

现在我可以通过以下方式获取特定数据元素:

lst[k][j,i]

我想将它转换为一个 numpy 数组,以便我可以索引它:

array[k,j,i]

即,形状应该是(10, 5, 2)

这似乎可行,但似乎完全没有必要:

z = np.empty((10,5,2))
for i,x in enumerate(z):
    x[:,:] = lst[i]

这些不起作用:

np.hstack(lst)
np.vstack(lst)
np.dstack(lst)  #this is closest, but gives wrong shape (5, 2, 10)

我想我可以将 anp.dstack与 a配对np.rollaxis,但同样,这似乎不太正确......

有没有用 numpy 做到这一点的好方法?

我看过这个非常相关的帖子,但我似乎无法解决这个问题。

4

2 回答 2

4

这应该只需调用数组构造函数即可工作,即np.array(lst).

>>> l = [np.arange(10).reshape((5,2)) for i in range(10)]
>>> np.array(l).shape
(10, 5, 2)
于 2012-12-19T20:08:29.247 回答
2

你的意思是喜欢

>>> lst = [np.arange(10).reshape(5,2)]*10
>>> arr = np.array(lst)
>>> arr.shape
(10, 5, 2)

?

于 2012-12-19T20:08:06.263 回答