首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python,如何在numpy数组中找到大于指定值的最低元素的列索引。

Python,如何在numpy数组中找到大于指定值的最低元素的列索引。
EN

Stack Overflow用户
提问于 2022-05-03 16:00:55
回答 4查看 92关注 0票数 1

所以我有一个二维的数字数组。假设我有一个随机数,例如x=46,我想找到最低数大于46的列索引。

代码语言:javascript
运行
复制
a = np.array([[16,32,49,80,85],[2,57,59,70,77],[9,11,30,36,64]])

其值为49,答案是第2栏。

代码语言:javascript
运行
复制
output = 2
EN

回答 4

Stack Overflow用户

发布于 2022-05-03 16:26:16

使用np.where

示例:

代码语言:javascript
运行
复制
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
票数 1
EN

Stack Overflow用户

发布于 2022-05-03 16:30:19

使用numpy.ma.masked_array可能是最优雅的方式:

代码语言:javascript
运行
复制
>>> 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返回扁平数组中最小值的位置。

票数 1
EN

Stack Overflow用户

发布于 2022-05-03 16:40:02

代码语言:javascript
运行
复制
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 )

输出

代码语言:javascript
运行
复制
value 49
index 2

这里使用大于46的条件,较少的东西就会变成一个大的值。找到了最小数目。根据这个数,得到了第二维的指数。用于提取一个数字。

与其使用大量数字,不如使用“numpy.inf”。谢谢提醒机修工猪。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72102223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档