我有一个一维的numpy数组。我想获得一个属性正确的最大和最小索引。
例如
A = np.array([0, 3, 2, 4, 3, 6, 1, 0])
,我想知道A
的值大于或等于4
的最小索引。
我能做
i = 0
while A[i] < 4:
i += 1
print("smallest index", i)
i = -1
while A[i] <4:
i -= 1
print("largest index", len(A)+i)
有更好的方法吗?
如this answer中的建议
np.argmax(A>=4)
返回3
,它确实是最小的索引。但这并没有给我最大的索引。
答案 0 :(得分:1)
您可以尝试类似的方法。根据评论,如果A
是。
A = np.array([0, 3, 2, 4, 3, 6, 1, 4])
idx_values = np.where(A >= 4)[0]
min_idx, max_idx = idx_values[[0, -1]]
print(idx_values)
# array([3, 5, 7], dtype=int64)
idx_values
返回满足您条件的所有索引值。然后,您可以访问最小和最大的索引位置。
print(min_idx, max_idx)
# (3, 7)