我有以下代码

row, col = image.shape
print image
for x in range(row):
  for y in range(col):
    image = np.insert(image, [x,y], values=0, axis=1)
print image


运行代码时出现此错误,

Traceback (most recent call last):
  File "C:\...\Code.py", line 55, in <module>
    expand(img1)
  File "C:\...\Code.py", line 36, in expand
    image = np.insert(image, [x,y], values=0, axis=1)
  File "C:\Python27\lib\site-packages\numpy\lib\function_base.py", line 3627, in insert
    new[slobj2] = arr
ValueError: array is not broadcastable to correct shape


我希望函数执行的操作是给定大小为i,j的数组,它在每一行和每一列之间插入零的行和列。

所以如果我有

`array([[1,2,3],
        [4,5,6],
        [7,8,9]])`


该函数将返回的结果

[1,0,2,0,3,0]
[0,0,0,0,0,0]
[4,0,5,0,6,0]
[0,0,0,0,0,0]
[7,0,8,0,9,0]
[0,0,0,0,0,0]


我也尝试过

row, col = image.shape
for x in range(row):
  image = np.insert(image, x, values=0, axis=1)
for y in range(col):
  image = np.insert(image, y, values=0, axis=1)


但是我没有得到想要的结果。

最佳答案

避免使用insert和其他逐渐改变数组形状的函数-这些类型的函数在NumPy中通常非常慢。而是预分配并填充:

newimage = np.zeros((row*2, col*2))
newimage[::2,::2] = image

关于python - 在Numpy中插入行和列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28614239/

10-15 22:45