【发布时间】:2013-03-20 15:22:09
【问题描述】:
给定一个数组
d = np.random.randn(100)
还有一个索引数组
i = np.random.random_integers(low=3, high=d.size - 5, size=20)
我怎样才能有效地创建一个二维数组r
r.shape = (20, 8)
这样对于所有j=0..19,
r[j] = d[i[j]-3:i[j]+5]
在我的例子中,数组非常大(~200000 而不是 100 和 20),所以一些快速的东西会很有用。
【问题讨论】:
-
low和high有什么不同吗?喜欢low=0, high=d.size - 8和d[i[j]:i[j]+8]? -
是的,它确实有所作为。如果
i的元素是<3,那么i[j]-3是负数。上限类似。 -
但是如果
all(0<=elem<=92 for elem in i) is True那么d[i[j]:i[j]+8]会是一样的,对吧?