作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Python 中获取以下四元组时遇到问题。令 n 为整数,例如 n=2,则算法应执行以下操作:
输入:两个 2x1 整数数组,arr1 = [0,1]
和 arr2 = [3,4]
输出:2x4 数组
quads = [[0,0,3,3],
[0,0,3,4],
[0,0,4,3],
[0,0,4,4],
[0,1,3,3],
[0,1,3,4],
[0,1,4,3],
[0,1,4,4],
[1,0,3,3],
...
]
依此类推,再次写入第二行,但在第一列中使用 1 而不是 0。
我的直觉是,这可以通过使用 tile
和 repeat
来实现,比如
import numpy as np
n = 3
arr = np.arange(n)
ix = np.repeat(arr,n**4)
iy = np.tile(np.repeat(arr,n**2),n**2)
ik = np.tile(np.repeat(arr,n**1),n**3)
il = np.tile(arr ,n**4)
quad = np.column_stack((ix,iy,ik,il))
但我做不到。关于直接实现此目的的更高效的 numpy 函数的任何想法(这是否可能使用 meshgrid
?)都会有所帮助。
为什么我需要这个:qi
最终将用作提取子张量 T[qi]
的索引,其中 T
是一个张量4 个维度。
最佳答案
from itertools import product
arr0 = [3,4]
quad = product(arr0, repeat=4)
print(*quad)
(3, 3, 3, 3) (3, 3, 3, 4) (3, 3, 4, 3) (3, 3, 4, 4) (3, 4, 3, 3) (3, 4, 3, 4) (3, 4, 4, 3) (3, 4, 4, 4) (4, 3, 3, 3) (4, 3, 3, 4) (4, 3, 4, 3) (4, 3, 4, 4) (4, 4, 3, 3) (4, 4, 3, 4) (4, 4, 4, 3) (4, 4, 4, 4)
编辑:回答您编辑的问题:
arr0 = [0,1]
arr1 = [3,4]
quad = product(arr0, arr0, arr1, arr1)
关于python - 生成四元对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72578269/
我是一名优秀的程序员,十分优秀!