【发布时间】:2021-09-17 23:27:23
【问题描述】:
我是一个 python 新手,试图了解如何更好地使用 numpy 掩码。 我有两个二维数据数组加上轴值,所以像
import numpy as np
data1=np.arange(50).reshape(10,5)
data2=np.random.rand(10,5)
x=5*np.arange(5)+15
y=2*np.arange(10)
其中 x 包含 data1 和 data2 的第 1 轴坐标,y 给出 data1 和 data2 的第 2 轴坐标。
我想识别和计算 data1 中的所有点
- data1>D1 分钟,
- 对应的 x 值在给定范围内,XRange 和
- 对应的 y 在给定的范围内,YRange
然后,当我全部完成后,我还需要进行检查以确保没有一个对应的 data2 值小于另一个限制 D2Max
如果
XRange = [27,38]
YRange = [2,12]
D1min = 23
D2Max = 0.8
我想在 x 方向包括单元格 3:4,在第二维包括 1:6(假设我想包括限制值)。
这意味着我只会考虑 data1[3:4,1:6] 那么二维数组中的值的限制就进入了,所以要识别和计算data1[3:4,1:6] > 23的点。
完成此操作后,我想获取 那些 数据位置并检查这些位置中是否有任何位置在 data2 中具有
实际上我没有 x 和 y 的公式,而且数组要大得多。此外,x 和 y 甚至可能不是单调的。
我认为我应该为此使用 numpy 掩码,并且我设法做到了,但结果似乎真的很折磨 - 我认为如果我只是循环使用中的值,代码会更清晰二维数组。
我认为主要问题是我无法将掩码与布尔运算结合起来。我从网上搜索得到的想法通常不适用于数组。
我认为有一种优雅且(希望)可以理解的方式来做到这一点,只需几行面具。有人愿意向我解释一下吗?
【问题讨论】:
-
你的句子
"all the points in data1 for which data1>D1min x is inside XRange y is inside YRange"不是特别清楚,请用正确的语法、标点符号重新表述,最好还提供一个简单的示例输入和所需的输出。 -
比如
"x is inside XRange"与data1中的数据有什么关系? -
很抱歉。我已经重写它试图更清楚。