我想在 python 中滚动一个 2D numpy,除了我想用零填充末端而不是像周期性地滚动数据。
具体如下代码
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]])
np.roll(x, 1, axis=1)
返回
array([[3, 1, 2],[6, 4, 5]])
但我更喜欢的是
array([[0, 1, 2], [0, 4, 5]])
我可以通过一些尴尬的修饰来做到这一点,但我希望有一种方法可以通过快速的内置命令来做到这一点。
谢谢
最佳答案
在 1.7.0 版本中有一个新的 numpy 函数 numpy.pad
可以在一行中做到这一点。 Pad 似乎非常强大,可以做的不仅仅是简单的“滚动”。此答案中使用的元组 ((0,0),(1,0))
表示要填充的矩阵的“边”。
import numpy as np
x = np.array([[1, 2, 3],[4, 5, 6]])
print np.pad(x,((0,0),(1,0)), mode='constant')[:, :-1]
给予
[[0 1 2]
[0 4 5]]
关于python numpy roll带填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2777907/