在 python 中找到特定值矩阵的索引 x,y
find indices x,y of a matrix of specific values in python
我将整数列表转换为二维数组,如下所示:
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: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
您需要将 where
行更改为:
data_indices = numpy.where((data<=obj_value_max) & (data>=obj_value_min))
注意每个条件句周围的 ()s
和 &
的使用(意思是 "and")。这是有效的,因为在 numpy 中,<,<=,>,>=,&,|,...
被覆盖,即它们的行为不同于原生 python。 and
和 or
不能被覆盖,这就是您收到错误消息的原因。
要获取每个值的索引对(而不是(x 索引数组,y 索引数组)),执行
zip(*data_indices)
我将整数列表转换为二维数组,如下所示:
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: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
您需要将 where
行更改为:
data_indices = numpy.where((data<=obj_value_max) & (data>=obj_value_min))
注意每个条件句周围的 ()s
和 &
的使用(意思是 "and")。这是有效的,因为在 numpy 中,<,<=,>,>=,&,|,...
被覆盖,即它们的行为不同于原生 python。 and
和 or
不能被覆盖,这就是您收到错误消息的原因。
要获取每个值的索引对(而不是(x 索引数组,y 索引数组)),执行
zip(*data_indices)