我需要在一个numpy数组中找到一个值的位置,并使用它来引用另一个numpy数组的相同位置的值

时间:2016-02-29 21:04:46

标签: python arrays numpy raspberry-pi

我正在编写代码来分析树莓派上的加速度计数据。传感器数据输出到单个txt文件,列以\ t分隔。我使用numpy.loadtxt导入了文本文件,并将其解压缩到单独的数组中。我可以在数组上执行trapz和cumtrapz之类的操作。

此数据将与另一个输出事件特定时间的传感器结合使用。我想花点时间,从传感器中找到最接近的记录时间,并将其与其他阵列的值相对应。

我尝试使用具有特定时间值的numpy.where,我知道它在列表中,输出为“(array([],dtype = int32),)”

这是我运行的代码。我敢肯定我至少误用了一件事。我仍然是Python和编码的初学者......

import logging
import sys
import numpy as np
from scipy import integrate
x,y,z,t=np.loadtxt('a.txt', dtype={'names':['x','y','z','t'], 
'formats':['f4','f4','f4','f4']},unpack='true')
p = integrate.trapz(integrate.cumtrapz(x, t, initial=0), t)
ti = np.where(x==1.5670002)
print ti
print p

完整的输出是

(array([], dtype=int32),)
0.0114166

所以我在x中搜索来自t的值。它正在输出     (阵列([101]),)

我如何从另一个阵列打印相应的数字?

1 个答案:

答案 0 :(得分:0)

这是我的解决方案:

<div>
  <span>hello<a href="#">link</a></span>
</div>
<div class="special">
  <span>hello<a href="#">link</a></span>
</div>
<p>
  <a href="#"> something else</a>
</p>

输出

import logging
import sys
import numpy as np
from scipy import integrate
x,y,z,t=np.loadtxt('a.txt', dtype={'names':['x','y','z','t'], 
'formats':['f4','f4','f4','f4']},unpack='true')
p = integrate.cumtrapz(integrate.cumtrapz(x, t, initial=0), t)
t0=input("What is reference time?")
ti = np.where(t>=t0)[0][0]
if t[ti]-t0 <= t0-t[ti-1]:
    t1 = ti
else:
    t1 = ti-1

print ('closest time was {0:0.4f}\ndisplacement at that time was {1:0.4f}' .format(t[t1],p[t1]))

似乎有效。当参考时间超出可用范围时,我将不得不添加错误消息。不过会喜欢一些建设性的批评。你认为任何命令比我使用的命令更好/更快?