[英]Python/Numpy - merge 2 items in each “row” of 1d array
我有一個快速的問題:
我有一個這樣的數組:
array([('A', 'B'),
('C', 'D'),
dtype=[('group1', '<U4'), ('group2', '<U4')])
我想像這樣將group1
和group2
組合成 1 :
array([('A_B'),
('C_D'),
dtype=[('group3', '<U4')])
我嘗試了一些與其他答案不同的東西,例如:
array_test = np.array([])
for group in array_test:
combi = np.append(combi,np.array(group[0]+"_"+group[1]))
這確實給了我一個我想要的新數組,但是當我嘗試將它添加到數組中時,我得到一個我無法弄清楚的錯誤(真的不知道這意味着什么):
np.append(test_array, combi, axis=1)
numpy.AxisError: axis 1 is out of bounds for array of dimension 1
我也嘗試了 concatenate 的其他東西,但它給出了同樣的錯誤
有人可以幫助我嗎?
該錯誤意味着您嘗試 append 一個一維數組( shape(n,)
)到另一個沿第二維( axis=1
)的一維數組,這是不可能的,因為您的 arrays 只有一維。
但是,如果您不指定軸(或axis=0
),您最終會得到一個像array(['A_B', 'C_D'])
這樣的一維數組。 要按要求獲取結構化數組,您需要創建一個新數組,例如np.array(combi, dtype=[('group3', '<U4')])
。
您可以在沒有循環的情況下執行相同的矢量化:
np.array(np.char.add(np.char.add(a['group1'], '_'), a['group2']), dtype=[('group3', '<U4')])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.