如何组合两个numpy数组的数字

时间:2014-01-23 10:45:37

标签: python numpy

奇怪的问题,我可以通过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]])

2 个答案:

答案 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]])