我有一个存储在2D numpy数组中的图像。我想从该数组中提取矩形中的所有像素值。矩形定义为((x1,y1),(x2,y2))
,其中所有x和y s都是自然数组索引。
我可以使用嵌套的for循环提取像素值,但是这样做的pythonic方法是什么?
答案 0 :(得分:2)
只需使用切片。例如:
In [3]: a = numpy.arange(20).reshape((4,5))
In [4]: a
Out[4]:
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
In [5]: a[2:4, 3:5]
Out[5]:
array([[13, 14],
[18, 19]])
通常,您可以使用切片替换索引,其中切片的格式为start:stop,或者可选地,start:stop:step和允许变量:
In [6]: x=2 ; print a[x-1:x+1, :]
[[ 5 6 7 8 9]
[10 11 12 13 14]]
答案 1 :(得分:2)
import numpy
array = numpy.arange(24).reshape((4, 6))
indices = ((1, 3), (2, 5))
((x1, y1), (x2, y2)) = indices
result = array[x1:x2, y1:y2]