簡體   English   中英

Python/Numpy - 在 1d 數組的每個“行”中合並 2 個項目

[英]Python/Numpy - merge 2 items in each “row” of 1d array

我有一個快速的問題:

我有一個這樣的數組:

array([('A', 'B'),
       ('C', 'D'),
      dtype=[('group1', '<U4'), ('group2', '<U4')])

我想像這樣將group1group2組合成 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM