相关疑难解决方法(0)

从向量创建矩阵,其中每行是向量的移位版本

我有一个像这样的numpy数组

import numpy as np

ar = np.array([1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

我想创建一个如下所示的数组:

array([[4, 1, 2, 3],
       [3, 4, 1, 2],
       [2, 3, 4, 1],
       [1, 2, 3, 4]])
Run Code Online (Sandbox Code Playgroud)

因此,每行对应于ar行指数+ 1的移位.

简单的实现可能如下所示:

ar_roll = np.tile(ar, ar.shape[0]).reshape(ar.shape[0], ar.shape[0])

for indi, ri in enumerate(ar_roll):
    ar_roll[indi, :] = np.roll(ri, indi + 1)
Run Code Online (Sandbox Code Playgroud)

这给了我想要的输出.

我的问题是,是否有一种更聪明的方法来避免循环.

python performance numpy vectorization

7
推荐指数
2
解决办法
954
查看次数

标签 统计

numpy ×1

performance ×1

python ×1

vectorization ×1