错误从数组中提取元素.蟒蛇

Moh*_*hit 21 python numpy

我有一个像这样的numpy数组

a = np.array(1)
Run Code Online (Sandbox Code Playgroud)

现在,如果我想从这个数组中获得1.我怎么回头看?

我试过了

a[0], a(0).. 
Run Code Online (Sandbox Code Playgroud)

喜欢

IndexError: 0-d arrays can't be indexed
Run Code Online (Sandbox Code Playgroud)

要么

TypeError: 'numpy.ndarray' object is not callable
Run Code Online (Sandbox Code Playgroud)

我甚至试图做一些奇怪的扁平化和东西,但我很确定它不应该那么复杂..而且我在两个都得到错误..我想要的是1作为一个整数?谢谢

Sve*_*ach 35

你创造的是什么

a = np.array(1)
Run Code Online (Sandbox Code Playgroud)

是一个零维数组,这些不能被索引.您也不需要对其进行索引 - 您可以a直接使用它,就好像它是标量值一样.如果您确实需要不同类型的值,比如说float,您可以使用显式转换它float(a).如果你需要在数组的基本类型中,你可以使用a.item()a[()].

请注意,零维数组是可变的.如果更改数组中单个条目的值,则通过对存储的数组的所有引用都可以看到此值.使用a.item(),如果要存储一个不变的值.

如果您想要使用单个元素的一维数组,请使用

a = np.array([1])
Run Code Online (Sandbox Code Playgroud)

a[0]现在可以访问单个元素.

  • `a.item()` 和 `a.itemset( ... )`,如所述,分别由答案的文本建议。 (3认同)
  • 我在这里添加一个搜索词:nditer。我还没有太多地使用 numpy,所以我被 nditer 困住了,它为我提供了 0 维数组而不是对象。不管怎样,谢谢你的解决方案! (2认同)
  • 您不能将它用作标量值,因为它不是标量值。直接使用它(例如,将“值”附加到列表中)可能会导致意外错误,因为您仍在使用对原始数组的引用,并且如果它更改了它的值,它也会在您使用引用的任何地方更改(例如我示例中的列表)。 (2认同)
  • `a.item()` 和 `a[()]` (或类似的 `a.min()`)的不同之处在于,前者创建一个 Python 对象来保存值,而后者返回一个 Numpy dtype 的对象。比较“type(a.item())”与“type(a[()])”。 (2认同)