簡體   English   中英

使用函數參數索引函數內的2D numpy數組

[英]Indexing a 2D numpy array inside a function using a function parameter

假設我有一個存儲在numpy數組中的python中的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]之類的內容作為參數傳遞給函數導致錯誤。

感謝您的幫助或鏈接。 格雷格

這是不可能的,因為當不直接用作slice[...]是語法錯誤,但您可以這樣做:

  • 僅給出相關的切片圖像 - 不是單獨的參數ShowImage(npimage[200:800,300:500]) (無逗號)

  • 或者給出一個slices tuple作為參數: 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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM