如果这是一个简单的问题,我深表歉意 - 我是 Python 和 numpy 的新手 - 但非常感谢你的帮助。
我有一个按行和列排列的二维 numpy 数据数组,第一列代表时间,后续列显示每个时间点的不同参数值。
我想从上到下读取给定的数据列(即时间 = 0 到时间 = 行数),并按顺序测试该列中的每个元素以找到第一个实例(并且只有第一个instance) 该列中的数据值满足给定条件的位置。 这不同于通过使用 numpy arange() 函数进行测试和迭代来“一次性”测试列中的“所有”或“任何”元素。
作为伪代码中的最小工作示例,如果我的数组是:
myarray =
[[1, 4 ....]
[2, 3 ....]
[3, 8 ....]
[4, 9 ....]....]
...其中第一列是时间,第二列包含每个时间点收集的数据值。
我希望能够从上到下依次遍历行并测试:
threshold = 5
for row = 0 to number of rows:
if data in [column 1, row] > threshold:
print "The first time point at which the data exceed the threshold is at time = 3 "
break
执行此操作的最 Pythonic(即高效且易于理解)的方法是什么?
在迭代测试之前是否需要将数组转换为列表,还是可以直接对数组进行顺序迭代测试?
希望这有某种意义......
期待已久
戴夫
最佳答案
试试这段代码:
>>> myarray = [[1, 4 ], [2, 3 ], [3, 8 ], [4, 9 ]]
>>> stop = False
>>> for row in myarray:
for d in row:
if d > 5:
print("Row: ", row, "Data: ", d)
stop = True
break
if stop:
break
('Row: ', [3, 8], 'Data: ', 8)
>>>
关于python - 二维数组中元素的顺序测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757611/