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