首页 > 解决方案 > 如何连接二维numpy字符串数组的相同位置元素?

问题描述

我有以下代码:

a = np.arange(25).reshape(5,5)
b = np.arange(25).reshape(5,5)
c = a.astype( str )
d = b.astype( str )

矩阵 a 和 b 是:

array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])

矩阵 c 和 d 是:

array([['0', '1', '2', '3', '4'],
       ['5', '6', '7', '8', '9'],
       ['10', '11', '12', '13', '14'],
       ['15', '16', '17', '18', '19'],
       ['20', '21', '22', '23', '24']], dtype='|S11')

我想通过使用 c 和 d 操作来获得以下矩阵。

array([['00', '11', '22', '33', '44'],
       ['55', '66', '77', '88', '99'],
       ['1010', '1110', '1212', '1313', '1414'],
       ['1515', '1616', '1717', '1818', '1919'],
       ['2020', '2121', '2222', '2323', '2424']], dtype='|S11')

怎么做?

标签: pythonnumpy

解决方案


为什么不做

>>> np.core.defchararray.add(a.astype(str), b.astype(str))
array([['00', '11', '22', '33', '44'],
       ['55', '66', '77', '88', '99'],
       ['1010', '1111', '1212', '1313', '1414'],
       ['1515', '1616', '1717', '1818', '1919'],
       ['2020', '2121', '2222', '2323', '2424']], dtype='<U22')


再现性材料

import numpy as np
a = np.array(
    [[ 0,  1,  2,  3,  4],
     [ 5,  6,  7,  8,  9],
     [10, 11, 12, 13, 14],
     [15, 16, 17, 18, 19],
     [20, 21, 22, 23, 24]]
)
b = np.array(
    [['0', '1', '2', '3', '4'],
     ['5', '6', '7', '8', '9'],
     ['10', '11', '12', '13', '14'],
     ['15', '16', '17', '18', '19'],
     ['20', '21', '22', '23', '24']],
    dtype='|S11'
)

推荐阅读