【发布时间】:2018-11-07 06:08:22
【问题描述】:
我需要一个 NumPy 中的 2n x n 矩阵,该矩阵由相互堆叠的 n x n 单位矩阵和负的 n x n 单位矩阵组成。
这是我最初的解决方案,效果很好。
def id_stack(n):
id_ = np.identity(n)
return np.vstack((id_, -id_))
id_stack(3)
# array([[ 1., 0., 0.],
# [ 0., 1., 0.],
# [ 0., 0., 1.],
# [-1., -0., -0.],
# [-0., -1., -0.],
# [-0., -0., -1.]])
然后我想我可以改为设置对角线并像这样更快,这也有效。
def id_stack2(n):
full = np.zeros((2*n, n))
rng = np.arange(n)
full[rng, rng] = 1
full[rng + n, rng] = -1
return full
我想知道是否有更快的方法来实现这一点,也许使用某种跨步技巧?
【问题讨论】:
-
Stride 技巧可能不会更快,但是是的,您可以使用它们。