【问题标题】:Python/Numpy - merge 2 items in each "row" of 1d arrayPython/Numpy - 在 1d 数组的每个“行”中合并 2 个项目
【发布时间】:2020-09-28 10:46:41
【问题描述】:

我有一个小问题:

我有一个这样的数组:

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 方法,但它给出了同样的错误

有人可以帮我吗?

【问题讨论】:

    标签: python arrays numpy merge concatenation


    【解决方案1】:

    错误意味着您尝试将一维数组 (shape(n,)) 沿第二维 (axis=1) 附加到另一个一维数组,这是不可能的,因为您的数组只有一维。

    如果您不指定轴(或axis=0),那么您最终会得到一个像array(['A_B', 'C_D']) 这样的一维数组。要按要求获取结构化数组,您需要创建一个新数组,例如 np.array(combi, dtype=[('group3', '&lt;U4')])

    你可以在没有循环的情况下做同样的矢量化:

    np.array(np.char.add(np.char.add(a['group1'], '_'), a['group2']), dtype=[('group3', '<U4')])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2016-05-25
      • 1970-01-01
      • 2021-12-07
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多