Python 使用函数参数为函数内的2D numpy数组编制索引
假设我有一个python中的2D图像存储在numpy数组中,称为npimage(1024乘以1024像素)。 我想定义一个函数ShowImage,它将numpy数组的一部分作为参数:Python 使用函数参数为函数内的2D numpy数组编制索引,python,function,numpy,slice,Python,Function,Numpy,Slice,假设我有一个python中的2D图像存储在numpy数组中,称为npimage(1024乘以1024像素)。 我想定义一个函数ShowImage,它将numpy数组的一部分作为参数: def ShowImage(npimage,SliceNumpy): imshow(npimage(SliceNumpy)) 这样它就可以绘制图像的给定部分,比如: ShowImage(npimage,[200:800,300:500]) 将为200到800之间的行和300到500之间的列绘制图像,即
def ShowImage(npimage,SliceNumpy):
imshow(npimage(SliceNumpy))
这样它就可以绘制图像的给定部分,比如:
ShowImage(npimage,[200:800,300:500])
将为200到800之间的行和300到500之间的列绘制图像,即
imshow(npimage[200:800,300:500])
在python中有可能做到这一点吗?目前,将类似[200:800300:500]的内容作为参数传递给函数会导致错误
谢谢你的帮助或链接。
Greg这是不可能的,因为当不直接用作
切片时,[…]
是一个语法错误,但您可以执行以下操作:
- 仅给出相关的切片图像-不使用单独的参数
ShowImage(npimage[200:800300:500])
(无逗号)
- 或者给出一个
slice
的tuple
作为参数:ShowImage(npimage,(slice(200800),slice(300:500))
。这些可以用于函数内部的切片,因为它们只是定义此切片的另一种方式:
npimage[(slice(200,800),slice(300, 500))] == npimage[200:800,300:500]
第二种选择的可能解决方案是:
import matplotlib.pyplot as plt
def ShowImage(npimage, SliceNumpy):
plt.imshow(npimage[SliceNumpy])
plt.show()
ShowImage(npimage, (slice(200,800),slice(300, 500)))
# plots the relevant slice of the array.
嘿,谢谢你,这很好用。不过,我更喜欢第二种解决方案。