【发布时间】:2021-11-17 22:34:12
【问题描述】:
我有一个 2D numpy array。每行都包含时间采样数据,这些数据必须与几个不同的可能标准相匹配。
对于每一行,必须应用几个不同的标准。每一行都是来自系统的数据,每个标准代表可以检测到的不同情况。如果行中的选择列在某个区间内(大于和小于某个值),则检测到条件条件。
有没有办法在numpy 中快速有效地做到这一点?尽管我是numpy 的新手,但我一直在环顾四周并没有真正找到方法。
我正在考虑一种散列机制,例如为每一行存储一些散列并查看条件的散列是否与该行的散列匹配。但是,散列机制仅适用于固定值,而不适用于值范围。因此,这实际上并不适用。
示例数据:
import numpy as np
myData = np.array([[7.241, 7.123, 9.0, 1.2, 1.0, 1.5, 67.14, 162.32], [8.123, 10.4, 7.68, 1.6,0.7, 2.3, 21.2, 175.2]])
示例条件:
Criteria #1:
condition 1 : column 1 must be greater than 6 and less than 7
condition 2 : column 4 must be greater than 0 and less than 2
condition 3 : column 6 must be greater than 10 and less than 50
(conditions are 'and' operation, so all conditions must be met for criteria to be met or not)
Criteria #2:
condition 1 : column 3 must be greater than 10 and less than 22
condition 2 : column 4 must be greater than 9 and less than 15
我在想numpy 在这方面是否支持某种正则表达式。 numpy 中是否有任何机制或技术可以有效地促进这一点?
上面的例子很简单,但在实际应用中,矩阵会包含数百行,每行可能有数十个条件来评估。
【问题讨论】:
-
(myData[:,0}>6)&(myData[:,0]<7)创建一个一维布尔数组,每行一个元素(全部为 False!)。对于其他列测试也是如此。 -
几百行在任何现代机器上都是很小的。
标签: python python-3.x performance numpy