python - 使用 numpy 生成数组排列的长列表(重复)
问题描述
我希望能够生成一个数组列表(任意长度),每个数组都是一个数组 A 的随机排列。
for x in range(n):
random.shuffle(A)
routes.append(A)
但我怀疑使用 numpy 实现这一目标的程序性较少。有什么建议吗?
解决方案
考虑这个例子:
In [59]: crr
Out[59]:
array([[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938]])
In [60]: np.random.shuffle(crr[0])
In [61]: crr
Out[61]:
array([[0.42109715, 0.50779425, 0.93753455, 0.11773652, 0.08751938,
0.83704624],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938],
[0.83704624, 0.42109715, 0.50779425, 0.93753455, 0.11773652,
0.08751938]])
由于随机洗牌是就地的,在这里我们可以只指定要洗牌的第一行。因此,如果您使用np.repeat
或np.tile
重复您的 A N 次并将结果重塑为像crr
这里这样的二维数组,您可以这样做以达到最终目标:
In [69]: for v in crr:
...: np.random.shuffle(v)
推荐阅读
- r - 有没有办法创建一个带有 n 种颜色的 ggplot 多面散点图,以便颜色交替或从调色板中随机化?
- java - 在没有 web.xml 的 Spring 应用程序中使用过滤器(在外部 JAR 中)
- javascript - 作为ajax请求的结果访问Json
- python - 使用 SymPy / Python 进行部分分数分解
- c# - 在后台运行计时器 c# 控制台
- typescript - 单元测试公共方法时内部私有方法未定义 - Jest & TypeScript
- java - 上标中的字符串是 ? 在 HTML 页面中
- google-apps-script - Google 表格 - 根据第 1 行的值隐藏列
- php - 如何在 Laravel 中使用 JSON 对象数组填充 MySQL 数据库?
- laravel - 如何获取当前产品 ID