【发布时间】:2018-10-06 03:53:37
【问题描述】:
我有一个过程需要将数据从 numpy recarray 提取到 ndarray,然后我在其中进行一些向量数学运算。 (recarray 来自 pytables table.read() 函数。)我想将数学输出(另一个 ndarray)映射回原始recarray 中的相同字段/列。我找到了一种逐列进行的方法。寻找一种更好的方法来来回处理数据。我的代码:
node_eigen_array = eigenvb_table.read_coordinates(node_rows)
node_eigen_array.shape[0]
10
node_eigen_array.dtype
dtype([('ID', '<i8'), ('X', '<f8'), ('Y', '<f8'), ('Z', '<f8'), ('FREQ', '<i8')])
resvec_array[:,0]=node_eigen_array['X']
resvec_array[:,1]=node_eigen_array['Y']
resvec_array[:,2]=node_eigen_array['Z']
# do some stuff that returns ndarray c_dot...
node_eigen_array['X']=cdot[:,0]
node_eigen_array['Y']=cdot[:,1]
node_eigen_array['Z']=cdot[:,2]
我试过这个跳过第一个recarray到ndarray:
resvec_array=node_eigen_array[['X','Y','Z']].view('float64').reshape((10,3))
numpy 抱怨:
This code may break in numpy 1.13 because this will return a view instead of a copy -- see release notes for details.
另外,寻找可以将ndarray数据简化回recarray的东西。 谢谢。
【问题讨论】: