![](/img/trans.png)
[英]indexing/slicing a 2d numpy array using the range/arange function as the argument
[英]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.