所以我有一个二维的数字数组。假设我有一个随机数,例如x=46,我想找到最低数大于46的列索引。
a = np.array([[16,32,49,80,85],[2,57,59,70,77],[9,11,30,36,64]])
其值为49,答案是第2栏。
output = 2
发布于 2022-05-03 16:26:16
使用np.where
示例:
a = np.array([[15, 8, 12], [11, 7, 3]])
np.where(a > 10) # (array([0, 0, 1]), array([0, 2, 0]))
# (0,0)=15 / (0,2)=12 / (1,0)=11
发布于 2022-05-03 16:30:19
使用numpy.ma.masked_array
可能是最优雅的方式:
>>> a = np.array([[16,32,49,80,85],[2,57,59,70,77],[9,11,30,36,64]])
>>> np.ma.masked_array(a, a < 46)
masked_array(
data=[[--, --, 49, 80, 85],
[--, 57, 59, 70, 77],
[--, --, --, --, 64]],
mask=[[ True, True, False, False, False],
[ True, False, False, False, False],
[ True, True, True, True, False]],
fill_value=999999)
>>> np.ma.masked_array(a, a < 46).argmin() % a.shape[1]
2
我对a.shape[1]
的结果进行模块化,以获得列的确切数目,因为argmin
返回扁平数组中最小值的位置。
发布于 2022-05-03 16:40:02
import numpy as np
value = np.where(a > 46, a, 100000000000000).min()
index = (np.where(a == value)[1])[0]
print('value', value)
print('index', index )
输出
value 49
index 2
这里使用大于46的条件,较少的东西就会变成一个大的值。找到了最小数目。根据这个数,得到了第二维的指数。用于提取一个数字。
与其使用大量数字,不如使用“numpy.inf”。谢谢提醒机修工猪。
https://stackoverflow.com/questions/72102223
复制相似问题