我将尽力为您翻译相关IT技术内容。以下是需要翻译的文本:
我发现有些示例使用strides函数来做类似于produce的事情,例如:
我正在尝试通过删除for循环并仅使用numpy数组来优化一些代码,因为我正在处理大型数据集。
例如,我想处理一个1D numpy数组:
a = [1, 2, 3, 4, 5]
我希望您能编写一个函数,生成一个2D numpy数组,其中每个列中的值向右移动一位。例如,在上面的示例中,如果我想要一个返回以下结果的函数:
[[1 2 3 4 5]
[0 1 2 3 4]
[0 0 1 2 3]
[0 0 0 1 2]
[0 0 0 0 1]]
我发现有些示例使用strides函数来做类似于produce的事情,例如:
[[1 2 3]
[2 3 4]
[3 4 5]]
然而,我正在尝试将我的每一列向另一个方向移动。或者,可以将问题视为将a的第一个元素放在第一条对角线上,第二个元素放在第二条对角线上,依此类推。然而,我想再次强调,我希望完全避免使用for、while或if循环。非常感谢任何帮助。
triu(circulant(a).T)
,但一些计时测试表明你的方法始终更快。 - DSM