我有4个numpy数组:time_start,time_stop,time1,pressure。 对于time_start中的每个元素,我想在time1中找到最接近值的索引,然后从那个索引中读取压力值!
同样,对于time_stop中的每个元素,我想在time1中找到最接近值的索引,然后读取压力值直到该索引! (time_start和time_stop具有相同的长度)
这是我写的: 找到最近值的函数:
import numpy as np
def find_nearest(array,value):
idx = (np.abs(array-value)).argmin()
return array[idx]
然后:
p = np.zeros(len(time_start), dtype = object)
itemindex_str = np.zeros(len(time_start), dtype = object)
itemindex_stp = np.zeros(len(time_start), dtype = object)
for i in range(0,len(time_start)):
itemindex_str =np.where(time1==find_nearest(time1,int(time_start[i])))
itemindex_stp = np.where(time1==find_nearest(time1,int(time_stop[i])))
p[i] = pressure[itemindex_str:itemindex_stp]
我收到错误:
Traceback (most recent call last):
File "re-written_mobility.py", line 174, in <module>
p[i] = pressure[itemindex_str:itemindex_stp]
TypeError: slice indices must be integers or None or have an __index__ method
如果你能帮助我解决这个问题,那将是非常好的。 非常感谢你:))
答案 0 :(得分:0)
如果我理解你的问题,你想要这个吗?:
result = [pressure[i] for i in [np.abs(time1 - ts).argmin() for ts in time_start]]
答案 1 :(得分:0)
np.where
可能返回数组而不是整数,这使得切片有点困难。返回idx
。
def find_nearest(array,value):
idx = (np.abs(array-value)).argmin()
return idx
itemindex_str = find_nearest(time1,int(time_start[i]))
itemindex_stp = find_nearest(time1,int(time_stop[i]))