python - 使用 numpy.roll 独立滚动矩阵的行
问题描述
我想滚动一个 2D numpy 数组,每行滚动一个 1D 数组中定义的数量。例如,我有
A=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
r=[1,2,2]
我希望执行以下任务:
C=np.copy(A)
for i in range(3):
C[i]=np.roll(C[i],r[i])
print(C)
[[3 1 2]
[5 6 4]
[8 9 7]]
显然,numpy roll 函数支持数组作为输入。但它的工作方式令人费解,我没有得到我认为我应该得到的东西:
B=np.roll(A,r,1)
print(B)
[[2 3 1]
[5 6 4]
[8 9 7]]
在这里,所有行都移动了相同的量(从我的实验来看,这似乎是我的一维数组元素的总和)。我在这里做错了什么?numpy.roll 比 for 循环快得多,所以如果可能的话我想使用它,但我不能让它输出我想要的。
解决方案
推荐阅读
- python - 是否可以在不使用循环更新变量时运行函数?
- go - 使用 go get 命令安装 Fabric CA 时遇到错误
- flutter - Flutter 屏幕制作思路
- javascript - 无法删除表单自定义验证的项目类
- python - 调用所有数据库表名创建列表 || pyodbc
- c - 这是 Cs50 问题 set1 现金。我不知道这段代码有什么问题可以帮助我
- https - 当证书不能在托管服务器上直接访问时,可以通过 SSL 运行 nest.js 服务
- c# - 在基于 UI 的应用程序中使用 await Task.Run(() => someMethodAsync()) 与 await someMethodAsync()
- css - React 元素的样式不适用于外部 css 文件
- blogger - Blogger 中的“重定向域”设置是 302 还是 301 重定向?