gpt4 book ai didi

Python,从矩阵到数组

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

我有一个 3d 矩阵 grid_z0,其尺寸为(比方说)50x25x36。该矩阵的每个点代表一个单元格。我想将此矩阵转换为大小为 50x25x36 的一维数组。我还想创建 3 个相同大小的数组,显示单元格中心的坐标。数组cxcycz存储了单元格中心在一个方向上的坐标。

此示例有效,但速度相当慢,尤其是对于大型数据集。有没有办法让它更快?

data={"x":[],"y":[],"z":[],"rho":[]}

for i in arange(0,50):
for j in arange(0,25):
for k in arange(0,36):
data["x"].append(cx[i])
data["y"].append(cy[j])
data["z"].append(cz[k])
data["f"].append(grid_z0[i][j][k])

最佳答案

您应该考虑使用 NumPy .

>>> import numpy as np
>>> a = np.random.rand(50,25,36) # Create a fake array
>>> print a.shape
(50, 25, 36)
>>> a.shape = -1 # Flatten the array in place
>>> print a.shape
(45000,)

当展平你的数组时,你做的相当于:

>>> b = []
>>> for i in range(a.shape[0]):
... for j in range(a.shape[1]):
... for k in range(a.shape[2]):
... b.append(a[i,j,k])

即先解析最后一个轴,再解析第二个,再解析第一个。

给定长度为 N 的三个一维列表 cxcycz,您可以构造一个二维列表数组:

>>> centers = np.array([cx,cy,cz])
>>> print centers.shape
(3, N)

关于Python,从矩阵到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12456308/

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