NxN python数组子集

时间:2016-02-18 20:04:03

标签: python arrays slice

我需要对NxN array的子集执行一些操作。我有子阵列的中心xy及其大小。

所以我很容易做到:

subset = data[y-size:y+size,x-size:x+size]

这很好。

我要问的是,如果xy都是位置的一维数组,是否有可能在不编写显式循环的情况下执行相同操作。

谢谢!

2 个答案:

答案 0 :(得分:0)

使用5x5数组的简单示例并设置 size = 1 ,我们可以得到:

import numpy as np
data = np.arange(25).reshape((5,5))

size = 1
x = np.array([1,4])
y = np.array([1,4])
subsets = [data[j-size:j+size,i-size:i+size] for i in x for j in y]

print(subsets)

返回numpy数组列表:

[array([[0, 1],[5, 6]]),
 array([[15, 16],[20, 21]]),
 array([[3, 4],[8, 9]]),
 array([[18, 19],[23, 24]])]

我希望你能找到它。

答案 1 :(得分:0)

要获取子集列表(假设您有位置列表xListyList),这将执行三元组:

subsetList = [ data[y-size:y+size,x-size:x+size] for x,y in zip(xList,yList) ]