【问题标题】:What is the exact meaning of multi-dimensional array for numpy?numpy的多维数组的确切含义是什么?
【发布时间】:2018-03-29 15:00:35
【问题描述】:

谁能告诉我为什么a 可以工作而b 不能和ValueError: setting an array element with a sequence 一起工作? This 说的是“多维”的原因,但就我而言,我认为ab 是一样的。

import numpy as np

a=np.array([[1],2,3])
b=np.array([1,2,[3]])

【问题讨论】:

  • 从混合嵌套的列表中创建一个数组是很棘手的。 np.array 首先尝试创建一个规则的多维数组。 ab 都失败了,所以必须依靠临时替代方案。

标签: python python-3.x numpy multidimensional-array


【解决方案1】:

Numpy 正在观察第一个元素以查看数组将具有的 dtype。对于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 的确切方式,但它必须非常接近。

【讨论】:

  • 所以list([1]) 意味着它只是list,而不是numpy list
  • 对于 a 它会看到一个列表,因此会产生一个对象数组。 这真的不可能那么简单,因为例如 [[1], [2], [3]] 在第一个位置看起来完全一样.
  • @PaulPanzer 你当然是对的。但这是表达观点的最简单方法。 Numpy 正在做一些检查。这些检查未能正确猜测b = np.array([1, 2, [3]])
猜你喜欢
  • 2011-12-14
  • 1970-01-01
  • 2011-05-06
  • 2013-07-22
  • 2021-11-23
  • 2017-04-19
  • 2015-08-02
相关资源
最近更新 更多