我有一个这样的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?
bwleehnv1#
你所创造的
是一个零维数组,并且这些不能被索引。您也不需要对它进行索引--您可以直接使用a,就像它是一个标量值一样。如果你真的需要不同类型的值,比如float,你可以显式地用float(a)转换它。如果数组的基类型中需要它,可以使用a.item()或a[()]。注意,零维数组是 mutable。如果您更改数组中单个条目的值,则这将通过对所存储数组的所有引用可见。如果要存储不可变值,请使用a.item()。如果您希望使用包含单个元素的一维数组,请使用
a
float
float(a)
a.item()
a[()]
a = np.array([1])
您现在可以使用a[0]访问单个元素。
a[0]
wlwcrazw2#
你也可以调用tolist()或任何数组缩减器函数,如max(),sum()等。在a上。
tolist()
max()
sum()
a = np.array(1) a.tolist() # 1 a.max() # 1
但是,需要注意的一点是,它们并不都返回相同的对象,因为如果检查它们的类型,a.item(),a.tolist()等。返回Python类型,而使用数组本身的操作(a.ravel()[0],a.max()等)返回numpy dtype。比如说
a.tolist()
a.ravel()[0]
a.max()
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
2条答案
按热度按时间bwleehnv1#
你所创造的
是一个零维数组,并且这些不能被索引。您也不需要对它进行索引--您可以直接使用
a
,就像它是一个标量值一样。如果你真的需要不同类型的值,比如float
,你可以显式地用float(a)
转换它。如果数组的基类型中需要它,可以使用a.item()
或a[()]
。注意,零维数组是 mutable。如果您更改数组中单个条目的值,则这将通过对所存储数组的所有引用可见。如果要存储不可变值,请使用
a.item()
。如果您希望使用包含单个元素的一维数组,请使用
您现在可以使用
a[0]
访问单个元素。wlwcrazw2#
你也可以调用
tolist()
或任何数组缩减器函数,如max()
,sum()
等。在a
上。但是,需要注意的一点是,它们并不都返回相同的对象,因为如果检查它们的类型,
a.item()
,a.tolist()
等。返回Python类型,而使用数组本身的操作(a.ravel()[0]
,a.max()
等)返回numpy dtype。比如说