以下代码在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
版本中“工作”时的结果是什么?你期望它做什么? - tmdavisona = np.array(x) + np.array(y)
”是否应该更正为“a = np.array(x) + np.array(y)”?否则会出现“ValueError: setting an array element with a sequence”的错误提示。 - Rory Yorkenp.dstack
或np.hstack
完成这个任务。 - soupaultx
可能是名称。这意味着结果必须是对象数据类型。你的示例让我们走上了错误的道路,试图堆叠列表。 - hpaulj