gpt4 book ai didi

python - 从并行数组中选择

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:20 25 4
gpt4 key购买 nike

我有很多(=1000+)、大(=1000000+ 条记录)数据文件,其中包含时间、x、y、z 数据。

我对示例文件使用了 numpy.loadtxt 来填充四个并行数组;例如,

ts, xs, ys, zs = numpy.loadtxt( 'sampledatafile.csv', delimiter=',', unpack=True)

我想选择这些并行数组的一个子集,其中的时间在指定的范围内;例如,

min_time = t0  # some time, in the same format as values in the data file
max_time = t1 # a later time

我已经能够通过遍历 ts 数组来做到这一点;像这样,

my_ts = []
my_xs = []
my_ys = []
my_zs = []

for row in range( len( ts ) ):
if ( min_time <= ts[row] ) and ( ts[row] <= max_time ):
my_ts.append( ts[row] )
my_xs.append( ss[row] )
my_ys.append( ys[row] )
my_zs.append( zs[row] )

这里有更高效的方法吗?我认为另一种方法是加载每条记录,使用 csv 文件阅读器,并检查每条记录,而不是 numpy.loadtxt。

肯定有更聪明的方法,在 Python 中?类似于“选择 ts 数组中满足条件的所有记录,以及并行数组中的关联元素”?为此,是否有聪明而酷的语法?特别是如果它比上述方法更有效?

最佳答案

arr = numpy.loadtxt( 'sampledatafile.csv', delimiter=',')
ts = arr[:, 0]
idx = (ts >= min_time) & (ts <= max_time)
my_ts, my_xs, my_ys, my_zs = arr[idx].T

如果你想先根据 ts 对你的数组进行排序,你也可以使用 np.argsort:

idx = np.argsort(ts)
arr = arr[idx]

关于python - 从并行数组中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18965285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com