使用函数参数

时间:2016-03-17 09:51:10

标签: python function numpy slice

假设我在python中有一个存储在numpy数组中的2D图像并称为npimage(1024倍1024像素)。 我想定义一个函数ShowImage,它将一个numpy数组的参数作为参数:

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:800,300:500]之类的内容作为参数传递给函数导致错误。

感谢您提供任何帮助或链接。 格雷格

1 个答案:

答案 0 :(得分:2)

这是不可能的,因为[...]在没有直接用作slice时会出现语法错误,但您可以这样做:

  • 仅提供相关的切片图像 - 不使用单独的参数ShowImage(npimage[200:800,300:500])(无逗号)

  • 或提供tuple slices作为参数:ShowImage(npimage,(slice(200,800),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.