使用函数参数在函数内索引二维 numpy 数组

Indexing a 2D numpy array inside a function using a function parameter

假设我在 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 之间的列绘制图像,即

imshow(npimage[200:800,300:500])

是否可以在 python 中做到这一点?目前将 [200:800,300:500] 作为参数传递给函数会导致错误。

感谢您的帮助或link。 格雷格

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

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

  • 或给出 slicestuple 作为参数: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.