numpy 从Python中的数组提取元素时出错

djp7away  于 2023-05-17  发布在  Python
关注(0)|答案(2)|浏览(114)

我有一个这样的numpy数组

a = np.array(1)

现在如果我想从这个数组中得到1,我该怎么检索呢?
我试过了

a[0], a(0)

但他们给予了错误:

IndexError: 0-d arrays can't be indexed

TypeError: 'numpy.ndarray' object is not callable

我甚至试着做一些奇怪的扁平化,但我很确定它不应该那么复杂。我在这两方面都犯了错误。我想要的是1作为一个int?

bwleehnv

bwleehnv1#

你所创造的

a = np.array(1)

是一个零维数组,并且这些不能被索引。您也不需要对它进行索引--您可以直接使用a,就像它是一个标量值一样。如果你真的需要不同类型的值,比如float,你可以显式地用float(a)转换它。如果数组的基类型中需要它,可以使用a.item()a[()]
注意,零维数组是 mutable。如果您更改数组中单个条目的值,则这将通过对所存储数组的所有引用可见。如果要存储不可变值,请使用a.item()
如果您希望使用包含单个元素的一维数组,请使用

a = np.array([1])

您现在可以使用a[0]访问单个元素。

wlwcrazw

wlwcrazw2#

你也可以调用tolist()或任何数组缩减器函数,如max()sum()等。在a上。

a = np.array(1)

a.tolist()  # 1
a.max()     # 1

但是,需要注意的一点是,它们并不都返回相同的对象,因为如果检查它们的类型,a.item()a.tolist()等。返回Python类型,而使用数组本身的操作(a.ravel()[0]a.max()等)返回numpy dtype。比如说

a = np.array(True)
b = np.array([True])

type(a.tolist())      # bool
type(a.max())         # numpy.bool_

a.tolist() is True    # True
a.max() is True       # False

a.tolist() is b[0]    # False
a.max() is b[0]       # True

相关问题