繁体   English   中英

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

[英]How to combine the digits of two numpy arrays

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

这是一个纯粹的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范围内,那么您当然可以完全取消数字逻辑。

您可以使用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]])     

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM