0
条件的新数组假设我有一个数组定义为:创建从numpy的阵列基于从列表
data = np.array([('a1v1', 'a2v1', 'a3v1', 'a4v1', 'a5v1'),
('a1v1', 'a2v1', 'a3v1', 'a4v2', 'a5v1'),
('a1v3', 'a2v1', 'a3v1', 'a4v1', 'a5v2'),
('a1v2', 'a2v2', 'a3v1', 'a4v1', 'a5v2'),
('a1v2', 'a2v3', 'a3v2', 'a4v1', 'a5v2'),
('a1v2', 'a2v3', 'a3v2', 'a4v2', 'a5v1'),
('a1v3', 'a2v3', 'a3v2', 'a4v2', 'a5v2'),
('a1v1', 'a2v2', 'a3v1', 'a4v1', 'a5v1'),
('a1v1', 'a2v3', 'a3v2', 'a4v1', 'a5v2'),
('a1v2', 'a2v2', 'a3v2', 'a4v1', 'a5v2'),
('a1v1', 'a2v2', 'a3v2', 'a4v2', 'a5v2'),
('a1v3', 'a2v2', 'a3v1', 'a4v2', 'a5v2'),
('a1v3', 'a2v1', 'a3v2', 'a4v1', 'a5v2'),
('a1v2', 'a2v2', 'a3v1', 'a4v2', 'a5v1')],
dtype=[('a1', '|S4'), ('a2', '|S4'), ('a3', '|S4'),
('a4', '|S4'), ('a5', '|S4')])
如何创建一个功能列出了由行数据元素在给定的条件下元组列表,r。
r = [('a1', 'a1v1'), ('a4', 'a4v1')]
我知道,它可以手动完成这样的:
data[(data['a1']=='a1v1') & data['a4']=='a4v1']
怎么样从使用R符合数据删除行。
data[(data['a1']!='a1v1') | data['a4']!='a4v1']
谢谢。
谢谢乔金顿。 – riza 2010-08-31 17:18:35
如果r不符合数据dtype的顺序? 例如,r = [('a4','a4v1'),('a1','a1v1')]。 – riza 2010-08-31 22:32:20
是的,这是该方法的一个难点。列必须以与dtype相同的顺序列出。 (或者,相反,它们将按照dtype的顺序返回,而不管它们的列出顺序如何)。我认为这只是结构化数组的设计限制。邮件列表,(http://www.mail-archive.com/[email protected]/msg24453.html),但它显然从来没有成为numpy的主干版本...... – 2010-09-01 15:07:42