使用函数参数在函数内索引二维 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])
(无逗号)
或给出 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.
假设我在 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])
(无逗号)或给出
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.