np.array([1,2,3])
我有numpy数组。我想把它变成一个numpy数组,每个1:1排列的元组。像这样:
np.array([ [(1,1),(1,2),(1,3)], [(2,1),(2,2),(2,3)], [(3,1),(3,2),(3,3)], ])
关于如何有效执行此操作的任何想法?我需要执行此操作数百万次。
如果您使用的是numpy,请不要使用元组。使用其功能并添加另一个尺寸为2的尺寸。我的建议是:
x = np.array([1,2,3]) np.vstack(([np.vstack((x, x, x))], [np.vstack((x, x, x)).T])).T
要么:
im = np.vstack((x, x, x)) np.vstack(([im], [im.T])).T
对于一般数组:
ix = np.vstack([x for _ in range(x.shape[0])]) return np.vstack(([ix], [ix.T])).T
这将产生您想要的:
array([[[1, 1], [1, 2], [1, 3]], [[2, 1], [2, 2], [2, 3]], [[3, 1], [3, 2], [3, 3]]])
但是作为3D矩阵,您可以在查看其形状时看到:
Out[25]: (3L, 3L, 2L)
随着数组大小变大,这比带有排列的解决方案更有效。将我的解决方案与@Kasra的收益相比,我的收益为1毫秒,而排列为100数组的收益为46毫秒。@AshwiniChaudhary的解决方案效率更高。