道歉,如果这是一个简单的问题 - 我是Python和numpy的新手 - 但我非常感谢你的帮助。
我有一个以行和列排列的2D 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(即有效且可理解)的方式是什么?
在迭代之前是否有必要将数组转换为列表?测试,还是可以直接顺序迭代和测试数组?
希望这有点道理......
非常感谢期待
戴夫
答案 0 :(得分:1)
试试这段代码:
>>> 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)
>>>