python numpy roll带填充

标签 python arrays numpy

我想在 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/

相关文章:

python - 有效地创建具有增量值的新列

python - 从二维数组中提取指定行的最有效方法?

python - 将 WAV 格式从 32 位浮点更改为 16 位 PCM

python - 如何在python中过滤列表中的对象?

python - “模块”对象没有属性 'Twitter'

python - Python 的 argparse 模块中具有混合类型 args 输入的参数解析器

Python - 从素数列表中删除包含偶数的素数

php - 在数组中选择自定义索引

arrays - 2个哈希数组之间的算术运算

arrays - 将System.UInt16数组转换为字符串