我有两个数组索引和我要回所有的指标之间,就像一个切片功能,手动将是这样的:功能切片指数在numpy的
ind1 = np.array([2,6])
ind2 = np.array([2,3])
final = np.array([[2,2,2], [4,5,6]])
由于轴沿至片是不固定的,我想出了这个:
def index_slice(ind1,ind2):
return np.indices(1 + ind1 - ind2) + ind2[:,np.newaxis,np.newaxis]
final = index_slice(ind1,ind2)
然而,这依赖于1 + ind1 > ind2
,它包括最后一个索引,以及(不符合Python)。有谁会知道这样做的功能,还是更清洁的实现?
预先感谢您。 Diego
P.S.给出一些这个想法来自何处的背景。我正在考虑一个矩阵的子矩阵,我想从两个角落的索引中访问它们。由于问题的性质,给定的角落并不总是具有相同的方向,你可以在@Pelson的答案中看到。
因此对于'ind1'和'ind2'的每个成员,你想要一个包含插入索引的'final'中的行吗? 'ind1'和'ind2'是否总是两个值?另外,就像phihag说的那样,如果你接受以前的问题的答案,它会鼓励人们回答你未来的问题。 – 2012-07-30 21:34:50
谢谢你的提示。当我试图添加一些评论时,我并没有意识到要标记正确的答案,所以是的...这样好多了。 – Diego 2012-07-31 02:41:36
当我想到'ind1'和'ind2'时,它们可以是任何ND数组中的两个索引,'final'应该填充它们之间的矩阵......就像在pelson的答案中一样。 – Diego 2012-07-31 02:47:15