[英]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.