列表转NumPy数组及指定坐标提取的技术实现问询
完全没问题!不管是在你最初的Python列表里,还是转换后的NumPy数组中,都能顺利提取出x、y、z这三个分量数组。我给你分别演示两种场景的实现方式:
方法一:直接操作原列表
你的原列表是三层嵌套的结构[[[...]]],我们先把最内层的一维数据取出来,再按步长提取对应分量:
original_list = [[[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -5.41511240e+01, ...]]] # 取出最内层的一维数据列表 flat_data = original_list[0][0] # 按步长3提取x、y、z分量 x = flat_data[::3] # 从索引0开始,每隔3个元素取一个(所有x_n) y = flat_data[1::3] # 从索引1开始,每隔3个元素取一个(所有y_n) z = flat_data[2::3] # 从索引2开始,每隔3个元素取一个(所有z_n)
方法二:操作转换后的NumPy数组
你的数组形状是(1, 1, 96),我们可以先调整形状或者直接利用索引提取,NumPy的方法更适合后续数值计算:
方式A:扁平化后按步长提取
import numpy as np arr = np.asarray(original_list) # 把多维数组扁平化成长度为96的一维数组 flat_arr = arr.flatten() # 提取分量 x_arr = flat_arr[::3] y_arr = flat_arr[1::3] z_arr = flat_arr[2::3]
方式B:reshape后按列提取(更直观)
import numpy as np arr = np.asarray(original_list) # 将数组reshape为(32, 3),对应32个点的(x, y, z) points = arr.reshape(32, 3) # 提取每一列作为对应分量 x_arr = points[:, 0] # 所有行的第0列(x分量) y_arr = points[:, 1] # 所有行的第1列(y分量) z_arr = points[:, 2] # 所有行的第2列(z分量)
两种方法都能得到你需要的x=[x0,x1,...,x31]、y=[y0,y1,...,y31]、z=[z0,z1,...,z31],如果后续还要做数据运算,更推荐用NumPy的方案,效率和易用性都更强。
内容的提问来源于stack exchange,提问作者tim tensor
相关产品推荐
相关产品推荐

