Given是形状为(m, n)
的inp_arr
,其值为0
s和255
s。我想在linear_ramp模式中用k零来填充0
s。
0
s不一定彼此相邻,因此可能存在两组0
s- 输出维度可以大于
(m, n)
我已经试过了:np.where(inp_arr== 0, np.pad(inp_arr, 2, pad_with), inp_arr)
,给了我一个形状不能一起广播的ValueError
。CCD_ 11就是从这里取的。
示例
import numpy as np
inp_arr = np.array([[255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255],
[255, 0, 0, 255, 255, 255, 255, 255],
[255, 0, 0, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 0, 0, 255, 255],
[255, 255, 255, 255, 0, 0, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255]])
out_arr = np.array([[255, 255, 255, 255, 255, 255, 255, 255],
[0, 0, 0, 0, 255, 255, 255, 255],
[0, 0, 0, 0, 255, 255, 255, 255],
[0, 0, 0, 0, 255, 255, 255, 255],
[0, 0, 0, 0, 255, 255, 255, 255],
[255, 255, 255, 0, 0, 0, 0, 255],
[255, 255, 255, 0, 0, 0, 0, 255],
[255, 255, 255, 0, 0, 0, 0, 255],
[255, 255, 255, 0, 0, 0, 0, 255]])
谢谢你的建议!:(
这看起来像是侵蚀:
>>> from scipy.ndimage import grey_erosion
>>> grey_erosion(inp_arr, size=(3,3))
array([[255, 255, 255, 255, 255, 255, 255, 255],
[ 0, 0, 0, 0, 255, 255, 255, 255],
[ 0, 0, 0, 0, 255, 255, 255, 255],
[ 0, 0, 0, 0, 255, 255, 255, 255],
[ 0, 0, 0, 0, 255, 255, 255, 255],
[255, 255, 255, 0, 0, 0, 0, 255],
[255, 255, 255, 0, 0, 0, 0, 255],
[255, 255, 255, 0, 0, 0, 0, 255],
[255, 255, 255, 0, 0, 0, 0, 255]])