在Numpy中有效地构建“滚动”行矩阵

迪特里希

我想(n,n)从一维数组构造一个-array,其中每行相对于上一行移动(带有换行)。以下代码执行此操作:

import numpy as np

r = np.array([1, 2, 3, 4, 5])
n = len(r)
MM = np.zeros((n, n), dtype=r.dtype)
for k in range(n):
    MM[k, :] = np.roll(r, k)

print(MM)

结果是:

[[1 2 3 4 5]
 [5 1 2 3 4]
 [4 5 1 2 3]
 [3 4 5 1 2]
 [2 3 4 5 1]]

有没有一种方法可以使Numpy更快地执行此操作,即for对于大r的Numpy ,避免使用-loop

沃伦·韦克瑟

看一眼 scipy.linalg.circulant

In [255]: r
Out[255]: array([1, 2, 3, 4, 5])

In [256]: circulant(r).T
Out[256]: 
array([[1, 2, 3, 4, 5],
       [5, 1, 2, 3, 4],
       [4, 5, 1, 2, 3],
       [3, 4, 5, 1, 2],
       [2, 3, 4, 5, 1]])

要么 scipy.linalg.toeplitz

In [257]: toeplitz(np.roll(r[::-1], 1), r)
Out[257]: 
array([[1, 2, 3, 4, 5],
       [5, 1, 2, 3, 4],
       [4, 5, 1, 2, 3],
       [3, 4, 5, 1, 2],
       [2, 3, 4, 5, 1]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用Numpy有效地求和复杂矩阵乘积

如何使用numpy有效地按值展开矩阵?

如何在numpy中有效地计算高斯核矩阵?

如何使用Pytorch和/或Numpy在矩阵的多维数组中有效地找到最大值的指标

在Haskell中有效地解析ASCII文件

在Brainfuck中有效地实现While循环

如何在numpy中有效地实现x [i] [j] = y [i + j]?

如何有效地对numpy中的每个块矩阵块应用相同的运算?

如何有效地计算numpy中两个矩阵系列的外积?

在Python中有效地对稀疏矩阵进行分组

如何在Java中有效地存储滚动项目属性?

在逻辑矩阵中有效地组合(AND)列组

在PostgreSQL中有效地计算滚动总和

在朱莉娅的稀疏矩阵中有效地插入对角线

在列表中有效地“取消”操作

在Python中有效地从稀疏矩阵的列中减去均值

如何有效地将函数逐行应用于NumPy矩阵

如何将矩阵变换有效地应用于NumPy数组的每一行?

使用Numpy有效地计算欧几里得距离矩阵

如何在Python中有效地计算巨大的矩阵乘法(tfidf功能)?

有效地构造Numpy中的稀疏邻接矩阵

在Sprite Kit中有效地将区域转换为矩阵

在ListView UWP中有效地实现搜索

如何有效地对 numpy 矩阵进行排序

如何使用numpy有效地查找转换矩阵中的状态变化?

有效地变换矩阵

如何在python中有效地结合断开的csr矩阵?

从 numpy 数组中有效地采样以相同数字结尾的连续整数序列?

在Numpy中有效地分配预定义范围内的值