In [67]: a
Out[67]:
array([(1.0, 2.0, 3.0), (4.0, 5.0, 6.0)],
dtype=[('A', '<f8'), ('B', '<f8'), ('C', '<f8')])
In [68]: i = 1 # Drop the 'B' field
In [69]: names = list(a.dtype.names)
In [70]: names
Out[70]: ['A', 'B', 'C']
In [71]: new_names = names[:i] + names[i+1:]
In [72]: new_names
Out[72]: ['A', 'C']
In [73]: b = a[new_names]
In [74]: b
Out[74]:
array([(1.0, 3.0), (4.0, 6.0)],
dtype=[('A', '<f8'), ('C', '<f8')])
字符串 作为一个函数打包:
def remove_field_num(a, i):
names = list(a.dtype.names)
new_names = names[:i] + names[i+1:]
b = a[new_names]
return b
型 删除给定的字段 name 可能更自然:
def remove_field_name(a, name):
names = list(a.dtype.names)
if name in names:
names.remove(name)
b = a[names]
return b
3条答案
按热度按时间66bbxpm51#
这不是一个简单的函数调用,但下面展示了一种删除第i个字段的方法:
字符串
作为一个函数打包:
型
删除给定的字段 name 可能更自然:
型
另外,请查看matplotlib的
mlab
module中的drop_rec_fields
函数。wdebmtf22#
在谷歌上搜索了我的方式,并从沃伦的回答中了解了我需要知道的内容后,我忍不住发布了一个更简洁的版本,增加了一个选项,可以一次性有效地删除多个字段:
字符串
示例如下:
型
或者如果我们真的要打高尔夫球,下面是等价的:
型
smtd7mpg3#
最简单的解决方案是使用内置函数
假设有
points_array = np.array
这个np.array
有多个列,其中一个是“classes”字符串