我有一个hdf5文件中电生理记录的数据集,其形式是我理解的非常接近numpy数组的形式,我想要做的是以最有效和快速的方式访问它。
让我解释一下:数据集是一个数组列表(2D数组?);每个数组包含x个通道(记录站点),通常在32-64左右。
问题如下:有数百万个阵列,它需要永远循环遍历每个阵列。此外,我必须遍历每个数组中的每个通道,以便检索值。
这是我的代码:
with(Physics)
Setup(mathematicalnotation = true);
Coordinates(X);
Setup(spaceindices = lowercaselatin)
Setup(tensors = q[mu](X))
PDEtools:-declare(q(X))
Setup(tensors = qp[mu](X))
PDEtools:-declare(qp(X))
有没有办法让它更高效,更快捷? 我是否必须使用numpy?如果是这样,我该如何实现?我觉得我在这里做错了。
编辑: 以下是有关以下属性的数据集中第一个数组的其他信息:
.shape - > (42)
.itemsize - > 2
.dtype - > INT16
.size - > 42个
.ndim - > 1
EDIT2: ..和数据集本身:
.shape - > (31646700,42)
.dtype - > INT16
.size - > 1329161400
答案 0 :(得分:1)
如果我猜t_stamp
是一个不同长度的1d数组,您可以使用以下方法收集所有元素>
list_value = []
for t_stamp in (dset_data):
list_value.append(t_stamp[t_stamp>400])
# list_value.extend()
如果要收集子列表中的值,请使用append
。如果你想要一个平面列表,请使用extend。
它仍会在dset_data
的'行'上进行迭代,但每行的选择会更快。
如果所有行都是42长,那么dset_data.value
将是一个2d numpy数组:
dset_data[dset_data>400]
将是所选值的平面数组
答案 1 :(得分:0)
import numpy as np
newData = dset_data.ravel()
newData.sort()
index = np.searchsorted(data,400)
res = newData[:index ]