二维数组特定值位置的获取

2024-10-01 02:34:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一些帮助来检测二维数组的所有值(坐标),以验证特定的条件。在

在开始的时候,我试着把我的二维数组转换成一维数组,我得到 迭代(位置)在一维数组中,但这似乎很困难 找到一个好的位置,而不是很“安全”时,我在二维转换。。。在

在没有1D变换的情况下,有没有可能检测到这一点? 谢谢你的帮助!在

例如:

import numpy as np

test2D = np.array([[  3051.11,   2984.85,   3059.17],
       [  3510.78,   3442.43,   3520.7 ],
       [  4045.91,   3975.03,   4058.15],
       [  4646.37,   4575.01,   4662.29],
       [  5322.75,   5249.33,   5342.1 ],
       [  6102.73,   6025.72,   6127.86],
       [  6985.96,   6906.81,   7018.22],
       [  7979.81,   7901.04,   8021.  ],
       [  9107.18,   9021.98,   9156.44],
       [ 10364.26,  10277.02,  10423.1 ],
       [ 11776.65,  11682.76,  11843.18]])

a,b = test2D.shape

test1D = np.reshape(test2D,(1,a*b))

positions=[]

for i in range(test1D.shape[1]):
    if test1D[0,i] > 5000.:
        positions.append(i)

print positions

所以在这个例子中,我的输入是2D数组“test2D”,我希望所有能验证条件的坐标都是列表。在


Tags: inimportnumpyforasnp情况数组
2条回答

如果你想要位置,可以用类似的方法

positions = zip(*np.where(test2D > 5000.))

Numpy.where

这会回来的

^{pr2}$

通常,当您使用numpy.arrays时,您可以在奇特的索引中使用条件。例如,test2D > 5000将返回一个与test2D维数相同的布尔数组,您可以使用它来查找条件为真的值:test2D[test2D > 5000]。不需要其他任何东西。与使用索引不同,您只需使用布尔数组来索引同一形状的test2D以外的其他数组。Have a look here。在

相关问题 更多 >