[英]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.