奇怪的问题,我可以通过int(str(2)+str(3))
连接两位数但是如何为两个numpy数组?像
x = np.array([[1,2,3],[4,5,6]])
y = np.array([[4,5,6],[1,2,3]])
z = np.xx(x,y)
print(z)
array([[14, 25, 36],
[41, 52, 63]])
答案 0 :(得分:4)
这是一个纯粹的numpy解决方案,它不涉及与其他数据结构的任何映射。它应该比列表理解快得多,特别是对于大型矩阵。
import numpy as np
x = np.array([[10,2,3],[4,5,6]])
y = np.array([[4,5,6],[1,2,3]])
digits = np.log10(y).astype(np.int)+1
z = x*(10**digits)+y
print z
我将1更改为10以显示它适用于多个数字;但如果您的数字始终在0-9范围内,如您的示例所示,您当然可以完全取消数字逻辑。
答案 1 :(得分:1)
您可以使用zip
和列表理解:
In [7]: np.array([[str(c) + str(d) for c, d in zip(a, b)] for a, b in zip(x, y)],
dtype=int)
Out[7]:
array([[14, 25, 36],
[41, 52, 63]])
In [20]: np.array([str(a)+str(b) for a, b in zip(*np.hstack((x, y)))],
dtype=int).reshape(x.shape)
Out[20]:
array([[14, 25, 36],
[41, 52, 63]])