我读了Docs,但仍然不太了解item
的区别和用例。
但最近我发现只有item
可以使用的地方:
a = np.array(100) # a has shape ()!
a.item() # or a.item(0)
这是从a
中获取价值的唯一方法,a[0]
不起作用。
答案 0 :(得分:4)
ndarray.item
允许您使用平面索引解释数组,而不是使用[]
表示法。这允许你做这样的事情:
import numpy as np
a = np.arange(16).reshape((4,4))
print(a)
#[[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]
# [12 13 14 15]]
print(a[2,2]) # "Normal" indexing, taking the 3rd element from the 3rd row
# 10
print(a.item(12)) # Take the 12th element from the array, equal to [3,0]
# 12
它还允许您轻松传递索引元组,如下所示:
print(a.item((1,1))) # Equivalent to a[1,1]
# 5
最后,正如您在问题中提到的,这是一种使用size = 1
作为Python标量来获取数组元素的方法。请注意,这与numpy
标量不同,如果a = np.array([1.0], dtype=np.float32)
则为type(a[0]) != type(a.item(0))
。
b = np.array(3.14159)
print(b, type(b))
# 3.14159 <class 'numpy.ndarray'>
print(b.item(), type(b.item()))
# 3.14159 <class 'float'>