梦里花落0921
In [128]: array = np.array([(1,2,3,4), (5,6,7,8)],dtype=[('a', 'i4'), ('b', 'i4'), ('c', ' ...: i4'),('d', 'i4')]) ...: names = list(array.dtype.names) ...: new_names=names[1:] ...: data = array[new_names] In [129]: array.dtype Out[129]: dtype([('a', '<i4'), ('b', '<i4'), ('c', '<i4'), ('d', '<i4')])In [130]: names Out[130]: ['a', 'b', 'c', 'd']In [131]: data Out[131]: array([(2, 3, 4), (6, 7, 8)], dtype={'names':['b','c','d'], 'formats':['<i4','<i4','<i4'], 'offsets':[4,8,12], 'itemsize':16})请注意,data.dtype有offsets. 在最新numpy版本中,选择字段的子集会生成view. array['a']还在那里,只是'隐藏'。除了这一变化,他们还为以下内容添加了一些功能recfunctions:In [133]: import numpy.lib.recfunctions as rf 要制作没有“a”数据的副本:In [134]: data1 = rf.repack_fields(data) In [135]: data1 Out[135]: array([(2, 3, 4), (6, 7, 8)], dtype=[('b', '<i4'), ('c', '<i4'), ('d', '<i4')])并制作一个非结构化数组:In [136]: rf.structured_to_unstructured(array) Out[136]: array([[1, 2, 3, 4], [5, 6, 7, 8]], dtype=int32)In [137]: rf.structured_to_unstructured(data) Out[137]: array([[2, 3, 4], [6, 7, 8]], dtype=int32)In [138]: rf.structured_to_unstructured(data1) Out[138]: array([[2, 3, 4], [6, 7, 8]], dtype=int32)这些功能记录在:https://docs.scipy.org/doc/numpy/user/basics.rec.html#accessing-multiple-fields由于所有字段都具有相同的 dtype ('i4')view作品 - 在一定程度上In [142]: data.view('i4') Out[142]: array([1, 2, 3, 4, 5, 6, 7, 8], dtype=int32)In [143]: data1.view('i4') Out[143]: array([2, 3, 4, 6, 7, 8], dtype=int32)但它是基础数据的视图,形状混乱。早期版本中存在此形状问题。所以最好阅读这些变化,并使用推荐的功能。在之前的 SO 问题中,我可能建议使用列表作为中介:In [144]: data.tolist() Out[144]: [(2, 3, 4), (6, 7, 8)]In [145]: np.array(data.tolist()) Out[145]: array([[2, 3, 4], [6, 7, 8]])