【问题标题】:How to create a 2d numpy ndarray using two list comprehensions如何使用两个列表推导创建 2d numpy ndarray
【发布时间】:2018-11-18 15:32:24
【问题描述】:

我尝试使用以下代码创建 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。

【问题讨论】:

  • 内部列表的长度很可能不同。它可以从中创建一个 2d 数组,因此它只创建一个包含它们的指针的 1d。实际上是原始列表的等效数组。

标签: python numpy


【解决方案1】:

你在里面缺少的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]])

【讨论】:

  • 请注意,正如@hpaulj 评论的那样,np 不能真正处理非平方二维矩阵,在这种情况下,您将拥有一个 np 数组的数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多