记录数组(record array)与结构数组类似:
In [1]:
import numpy as np质点类型:
In [2]:
partical_dtype = np.dtype([('mass', 'float'),
('velocity', 'float')])生成记录数组要使用 numpy.rec 里的 fromrecords 方法:
In [3]:
from numpy import rec
particals_rec = rec.fromrecords([(1,1), (1,2), (2,1), (1,3)],
dtype = partical_dtype)In [4]:
particals_recOut[4]:
rec.array([(1.0, 1.0), (1.0, 2.0), (2.0, 1.0), (1.0, 3.0)],
dtype=[('mass', '<f8'), ('velocity', '<f8')])在记录数组中,域可以通过属性来获得:
In [5]:
particals_rec.massOut[5]:
array([ 1., 1., 2., 1.])也可以通过域来查询:
In [6]:
particals_rec['mass']Out[6]:
array([ 1., 1., 2., 1.])不过,记录数组的运行效率要比结构化数组要慢一些。
也可以通过将一个结构化数组看成记录数组:
In [7]:
particals = np.array([(1,1), (1,2), (2,1), (1,3)],
dtype = partical_dtype)使用 view 方法看成 recarray :
In [8]:
particals_rec = particals.view(np.recarray)In [9]:
particals_rec.massOut[9]:
array([ 1., 1., 2., 1.])In [10]:
particals_rec.velocityOut[10]:
array([ 1., 2., 1., 3.])对于自定义的类型,可以通过它的 names 属性查看它有哪些域:
In [11]:
particals.dtype.namesOut[11]:
('mass', 'velocity')