有人可以告诉我为什么a
有效,而b
没有ValueError: setting an array element with a sequence
? This说“多维”原因,但就我而言,我认为a
和b
是相同的。
import numpy as np
a=np.array([[1],2,3])
b=np.array([1,2,[3]])
答案 0 :(得分:4)
Numpy正在观察第一个元素,看看该数组将具有什么类型。对于a
,它会看到一个列表,因此生成一个object
数组。它很乐意继续将其余元素填入object
数组。对于b
,它会看到一个数值并假设它将成为某个数字dtype
。然后当它到达列表时它会发出砰砰声。
您可以通过首先声明object
dtype
a=np.array([[1],2,3])
b=np.array([1,2,[3]], 'object')
print(a, b, sep='\n\n')
[list([1]) 2 3]
[1 2 list([3])]
请注意,这可能不是Numpy如何识别dtype
,但它必须非常接近。