Python 如何使用两种列表理解创建二维numpy ndarray

Python 如何使用两种列表理解创建二维numpy ndarray,python,numpy,Python,Numpy,我尝试使用以下代码创建2D numpy ndarray: temp = np.array([[np.mean(w2v[word]) for word in docs if word in w2v] for docs in X[:5]]) temp的形状为5,而不是预期的5,x 此外,temps的数据结构类似于:array[list[…],…] 内部列表似乎没有转换为ndarray。您缺少的np.array应该是: temp = np.array([np.array([np.mean(w2v[w

我尝试使用以下代码创建2D numpy ndarray:

temp = np.array([[np.mean(w2v[word]) for word in docs if word in w2v] for docs in X[:5]])
temp的形状为5,而不是预期的5,x

此外,temps的数据结构类似于:array[list[…],…]

内部列表似乎没有转换为ndarray。

您缺少的np.array应该是:

temp = np.array([np.array([np.mean(w2v[word]) for word in docs if word in w2v] for docs in X[:5])])
运行示例:

bob
Out[70]: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

tmp = np.array([np.array([x for x in Y]) for Y in bob])

tmp
Out[72]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

很可能内部列表的长度不同。它可以从中生成一个2d数组,所以它只生成一个包含指针的1d。实际上是一个与原始列表等效的数组。请注意,正如@hpaulj所评论的,np不能真正处理非平方2d矩阵,在这种情况下,您将拥有一个np数组数组。