arrays - 如何使用 numpy 有效地生成元组数组
问题描述
我想有效地生成一个 numpy 元组数组,其大小是使用numpy.arange()并专门使用numpy 函数的每个轴的维度的倍数。例如:下面的a_list的大小是max_i*max_j*max_k。
此外,我想为下面的示例获取的数组如下所示: [(0,0,0), (0,0,1), ..., (0, 0, 9), (0, 1, 0), (0, 1, 1), ..., (9, 4, 14)]
a_list = list()
max_i = 10
max_j = 5
max_k = 15
for i in range(0, max_i):
for j in range(0, max_j):
for k in range(0, max_k):
a_list.append((i, j, k))
上面的循环依赖于 list 和 for 循环的复杂度是 O(max_i*max_j*max_k),我想使用分解的方式在 numpy.xml 中生成一个相似的元组数组。可能吗 ?
解决方案
我更喜欢评论中 Divakar 的解决方案,但这是另一个。
您所描述的是笛卡尔积。在这篇文章的一些帮助下,您可以按如下方式实现
import numpy as np
# Input
max_i, max_j, max_k = (10, 5, 15)
# Build sequence arrays 0, 1, ... N
arr_i = np.arange(0, max_i)
arr_j = np.arange(0, max_j)
arr_k = np.arange(0, max_k)
# Build cartesian product of sequence arrays
grid = np.meshgrid(arr_i, arr_j, arr_k)
cartprod = np.stack(grid, axis=-1).reshape(-1, 3)
# Convert to list of tuples
result = list(map(tuple, cartprod))
推荐阅读
- javascript - 如何通过 React 中的对象数组 .map()
- javascript - 无法在反应引导模式中使用我的可重用反应组件
- regex - 熊猫替换不适用于正则表达式 \([AZ]+\:[AZ]+\)
- reactjs - 输入值清除 - React Hooks
- jenkins - 如何使用自定义提交消息设置 web-hook?
- r - 包括出现值的所有行,否则,删除
- java - 如何使用 maven 构建 Javafx + Spring 进行生产
- mysql - 具有多个 AND OR 条件的原则
- java - 数组 B 中数组 A 中对象的访问方法
- php - 无法使用正确的用户名和密码登录php和myql