python-3.x - 交换numpy数组中元素的位置
问题描述
我创建了一个 numpy 数组
a=np.array([1,2,3])
a
>>> array([1, 2, 3])
我想改变元素的位置。
我的预期输出应该只包含这三种模式
[array([1, 2, 3]),
array([2, 3, 1]),
array([1, 3, 2])]
我尝试使用如下排列库
b=[]
for i in range(3):
b.append(np.random.permutation(a)
实际输出:
[array([1, 3, 2]),
array([1, 3, 2]),
array([1, 2, 3])]
但是我有时会得到重复的值!
欢迎提出想法!!
提前致谢!!
解决方案
如果您不想重复,请尝试使用内置itertools.permutations()
实用程序。没有任何参数,它将返回所有可能的排列:
>>> import itertools
>>> list(itertools.permutations([1,2,3]))
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
(注意 3 元素列表有 6 个排列)
或者使用 numpy 数组:
>>> import numpy as np
>>> [np.array(a) for a in (itertools.permutations([1,2,3]))]
[array([1, 2, 3]), array([1, 3, 2]), array([2, 1, 3]), array([2, 3, 1]), array([3, 1, 2]), array([3, 2, 1])]
推荐阅读
- javascript - 使用 Javascript 向 ProBasketballAPI.com 发出 POST 请求
- javascript - 使用 Webpack 解析 css 背景图像 url
- asynchronous - 异步调用是否会创建一个单独的线程并释放 CPU 周期?
- performance - 如何快速遍历许多 .fits 文件?
- javascript - 为什么我对简单布尔语句的开玩笑测试比控制台花费的时间要长得多?
- firebase - 如何最好地在 Firebase Firestore 中存储和查询日历重复模式?
- asp.net - 在 ASP.Net 中动态加载一个类
- php - 下拉字段未将保存的值显示为选中状态
- typescript - 将字符串值映射到打字稿中的自定义类型
- javascript - Javascript 数组 reduce 从索引 1 开始