在这个例子中,我有一个一维 ndarray 列表,长度为 9,列表有 9 个元素,每个元素有 shape=(2048,)
,所以完全9 * (2048,)
, 我得到这些 ndarray
来自 mxnet
这样每个 ndarray
是<NDArray 2048 @cpu(0)>
数组 dtype=numpy.float32
如果我使用 np.asarray
对这个列表进行改造,变成如下结果
shape=<class 'tuple'>: (9, 2048, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
显然,我想要一个二维数组,shape=(9, 2048)
, 如何解决这个问题?
ps: 我是通过保存一个 npy
发现这个问题的文件并加载它。在将其转换为 ndarray
之前,我直接保存了列表(所以np.save
会自动把列表转换成ndarrary
)我加载后发现形状变成了上面的东西,真是不正常
下面的答案,np.vstack
和 np.array
两者都适用于共同的 list
至 ndarray
问题,但无法解决我的问题,所以我怀疑这是 mxnet
的一些特例
最佳答案
您可以使用np.vstack
。这是一个例子:
import numpy as np
li = [np.zeros(2048) for _ in range(9)]
result = np.vstack(li)
print(result.shape)
这会根据需要输出 (9, 2048)
。
关于python - 如何将一维 ndarray 列表转换为二维 ndarray (mxnet ndarray),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52124584/