python – numpy数组到置换矩阵

np.array([1,2,3])

我有阵容.我想把它变成一个numpy数组,每个1:1排列的元组.像这样:

np.array([
    [(1,1),(1,2),3)],[(2,(2,[(3,(3,])

有关如何有效地做到这一点的任何想法?我需要做几百万次这个操作.

解决方法

如果您正在使用numpy,请不要使用元组.使用它的力量并添加一个尺寸为2的尺寸.
我的建议是:

x = np.array([1,3])
np.vstack(([np.vstack((x,x,x))],[np.vstack((x,x)).T])).T

要么:

im = np.vstack((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],3]],[[2,[2,[[3,[3,3]]])

但作为3D矩阵,正如您在查看其形状时所看到的:

Out[25]: (3L,3L,2L)

当阵列大小变大时,这比具有排列的解决方案更有效.我的解决方案针对@ Kasra的时间为1ms,而对于一个100的大小为100的阵列,我的解决方案为46ms.@ AshwiniChaudhary的解决方案更有效率.

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...