gpt4 book ai didi

python - 使用掩码获取 2D NumPy 数组的特定值的位置

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:52 27 4
gpt4 key购买 nike

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

我已经问过类似的问题,但现在我掩盖了我不感兴趣的特定值......上次有人建议使用zip(*np.where(test2D < 5000.))

例如:

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]])

这样我就可以获得所有验证 < 5000 的位置:

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

现在我想拒绝一些对我来说无用的值(它是一个带有坐标的数组):

rejectedvalues = np.array([[0, 0], [2, 2], [3, 1], [10, 2]])
i, j = rejectedvalues.T

mask = np.zeros(test2D.shape, bool)
mask[i,j] = True
m = np.ma.array(test2D, mask=mask)

positions2=zip(*np.where(m < 5000.))

但是positions2给我的和positions一样...

最佳答案

np.ma.where尊重掩码——它不会返回被掩码的条件下的索引(例如 m < 5000. )。

In [58]: np.asarray(np.column_stack(np.ma.where(m < 5000.)))
Out[58]:
array([[0, 1],
[0, 2],
[1, 0],
[1, 1],
[1, 2],
[2, 0],
[2, 1],
[3, 0],
[3, 2]])

将其与使用 np.where 的类似表达式进行比较:

In [57]: np.asarray(np.column_stack(np.where(m < 5000.)))
Out[57]:
array([[0, 0],
[0, 1],
[0, 2],
[1, 0],
[1, 1],
[1, 2],
[2, 0],
[2, 1],
[2, 2],
[3, 0],
[3, 1],
[3, 2]])

关于python - 使用掩码获取 2D NumPy 数组的特定值的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23591076/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com