【发布时间】:2015-10-02 14:35:26
【问题描述】:
以下代码在 numpy 1.7.1 中运行,但在当前版本中给出值错误。我想知道它的根本原因。
import numpy as np
x = [1,2,3,4]
y = [[1, 2],[2, 3], [1, 2],[2, 3]]
a = np.array([x, np.array(y)])
以下是我在 numpy 1.7.1 中得到的输出
>>>a
array([[1, 2, 3, 4],
[array([1, 2]), array([2, 3]), array([1, 2]), array([2, 3])]], dtype=object)
但相同的代码在 1.9.2 版本中会产生错误。
----> 5 a = np.array([x, np.array(y)])
ValueError: could not broadcast input array from shape (4,2) into shape (4)
我找到了一种可能的解决方案。但我不知道这是否是最好的做法。
b= np.empty(2, dtype=object)
b[:] = [x, np.array(y)]
>>> b
array([[1, 2, 3, 4],
array([[1, 2],
[2, 3],
[1, 2],
[2, 3]])], dtype=object)
请提出一个解决方案来实现所需的输出。谢谢
【问题讨论】:
-
它在
1.7.1中“工作”时的结果是什么?你期待它做什么? -
a =行应该是a = np.array(x) + np.array(y)吗?否则我会得到ValueError: setting an array element with a sequence. -
你应该使用
np.dstack或np.hstack来完成这个任务 -
@tom 数组的第一个元素可以是名称,第二个元素可以是坐标等值。我之前使用过 numpy 数组,它返回的是一个 numpy 数组。
-
你应该马上告诉我们
x可能是名字。这意味着结果必须是对象 dtype。您的示例使我们走错了路,试图堆叠列表。