gpt4 book ai didi

python - Numpy 数组创建

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:51 24 4
gpt4 key购买 nike

首先,我会为这个问题的任意性道歉,但我正在重写我的一些脚本以使用 Numpy 数组而不是嵌套的 python 列表(为了性能和内存),但我仍在为他们的声明而苦苦挣扎。

我正在尝试使用 numpy 数组创建一个结构,我从数组中的 1000 个(任意值)元素开始,其中每个元素应包含一个 float (如 [x][0])和一个包含坐标的嵌套数组(因此 10.0000 x 2 float 每个顶级元素)(如 [x][1],嵌套数组中的每个元素可访问为 [x][1][y][z],其中 y 是嵌套数组中的元素, z 指定 2 个坐标中的哪一个)。下面的问题Nested Structured Numpy Array创建一个几乎相同的结构(作为我的问题和我想要的结构的引用)。

原理图原始数据示例:

time 0
m/z 10 int 10
m/z 20 int 20
m/z 30 int 1000
...
time 1
<repeat>

我读到我必须使用 dtype 部分来定义嵌套数组,但我不太确定空数组维度的声明部分,有人能帮帮我吗?这是我到目前为止的想法。

data=np.zeroes((1000,2/* 现在添加嵌套数组 */), dtype=[('time', 'f'), [('m/z','f' ), ('强度','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)

请注意,这会创建 1000 个维度 (10000,2) 的数组。如果您只执行只查看其中一个数组的操作,那很好。使用单独的 (1000,10000,2) 数组,您可以更好地利用 NumPy 中的矢量化操作。例如,您可以像这样在一个操作中增加所有第二个坐标:

>>> b = np.zeros((1000,10000,2))
>>> b[:,:,1] += 1

尝试对 a[:][1][:,1] 做同样的事情是错误的。

关于python - Numpy 数组创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15829532/

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