Bas*_*sen 3 python arrays numpy
首先,我将为这个问题的任意性道歉,但我正在重写我的一些脚本使用Numpy数组而不是嵌套的python列表(性能和内存),但我仍在努力完成他们的声明.
我试图使用numpy数组创建一个结构,我开始在数组中的1000(任意值)元素,其中每个元素应包含一个浮点数(如[x] [0])和一个包含坐标的嵌套数组(所以10.0000 x 2浮动PER顶级元素)(如[x] [1],嵌套数组中的每个元素都可以作为[x] [1] [y] [z]访问,其中y是嵌套数组中的元素,z指定哪个2坐标).以下问题嵌套结构化Numpy数组创建了一个相同的结构(作为我的问题和我想要的结构的参考).
原理图原始数据示例:
time 0
m/z 10 int 10
m/z 20 int 20
m/z 30 int 1000
...
time 1
<repeat>
Run Code Online (Sandbox Code Playgroud)
我已经读过我必须使用dtype部分来定义嵌套数组,但是我不太确定空数组的维度部分,有人能帮我一把吗?这是我到目前为止所提出的.
data=np.zeroes((1000,2 /* Now add nested array */), dtype=[('time', 'f'), [('m/z','f'), ('intensity','f')]])
PS:矩阵可能是更好的选择吗?
>>> a = np.zeros(1000, dtype='float32, (10000,2)float32')
>>> a[200][0]
0.0
>>> a[200][1][2000]
array([ 0., 0.], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
请注意,这会创建1000个维度数组(10000,2).如果您只进行仅查看其中一个阵列的操作,那就没问题.使用单独的(1000,10000,2)数组,您可以更好地利用NumPy中的矢量化操作.例如,您可以在一个操作中递增所有第二个坐标,如下所示:
>>> b = np.zeros((1000,10000,2))
>>> b[:,:,1] += 1
Run Code Online (Sandbox Code Playgroud)
尝试做同样的事a[:][1][:,1]是一个错误.