【问题标题】:find indices x,y of a matrix of specific values in python在python中查找特定值矩阵的索引x,y
【发布时间】:2015-09-08 08:20:28
【问题描述】:

我将整数列表转换为二维数组,如下所示:

data = numpy.array( l )
shape = ( 10, 30 )
data = data.reshape( shape )

我尝试获取大于某个阈值且低于某个其他阈值的值矩阵的索引 x,y。

我试着做下一个,但它提供了一些错误:

data_indices = numpy.where(data<=obj_value_max and data>=obj_value_min) 

错误:

ValueError:具有多个元素的数组的真值是 模糊的。使用 a.any() 或 a.all()

【问题讨论】:

    标签: python matrix multidimensional-array indices


    【解决方案1】:

    您需要将where 行更改为:

    data_indices = numpy.where((data<=obj_value_max) & (data>=obj_value_min))
    

    注意每个条件子句周围的()s&amp;(意思是“和”)的使用。这是有效的,因为在 numpy 中,&lt;,&lt;=,&gt;,&gt;=,&amp;,|,... 被覆盖,即它们的行为与原生 python 不同。 andor 不能被覆盖,这就是您收到错误消息的原因。

    要为每个值获取索引对(而不是(x 索引数组,y 索引数组)),请执行

    zip(*data_indices)
    

    【讨论】:

    • 您好,感谢您的回答,现在可以使用了!但是我可以再问一个问题吗?如果我打印我得到的 data_indices: (array([ 0, 0, 0, ..., 599, 599, 599], dtype=int64), array([ 20, 33, 36, ..., 783, 792, 799], dtype=int64)) 怎么样,我可以像在字典里那样得到它吗?
    • 你的最终目标是什么?你想得到一个 (x, y) 对的数据值,例如value_min =&gt; data &gt;= value_min?你的输出本质上是(array_of_x_inds, array_of_y_inds)
    • 是的,我想要一对(x,y),就像你写的那样:(array_of_x_inds, array_of_y_inds)
    • 只要zip(*data_indices)
    • 谢谢!!这对我有帮助
    猜你喜欢
    • 2017-04-19
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多