从两点之间的numpy数组中获取值

时间:2014-02-27 21:53:11

标签: python arrays numpy

我有一个存储在2D numpy数组中的图像。我想从该数组中提取矩形中的所有像素值。矩形定义为((x1,y1),(x2,y2)),其中所有x和y s都是自然数组索引。

我可以使用嵌套的for循环提取像素值,但是这样做的pythonic方法是什么?

2 个答案:

答案 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)

看看numpy's indexing

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]