說我有一個numpy的載體,矢量化一個numpy的切片操作
A = zeros(100)
,我把它分成子向量通過斷點該指數的列表爲A
,例如,
breaks = linspace(0, 100, 11, dtype=int)
所以i
- 子向量將位於索引breaks[i]
(含)和breaks[i+1]
(不含)之間。 中斷不一定是等間隔的,這只是一個例子。 但是,他們會一直嚴格增加。
現在我想操作這些子向量。舉例來說,如果我想設置i
個分矢量來i
的所有要素,我可以做:
for i in range(len(breaks) - 1):
A[breaks[i] : breaks[i+1]] = i
或者我可能要計算子向量表示:
b = empty(len(breaks) - 1)
for i in range(len(breaks) - 1):
b = A[breaks[i] : breaks[i+1]].mean()
等等。
如何避免使用for
循環,而是將這些操作向量化?
是'breaks'預排序? – Divakar
@Divakar:是的,他們正在嚴格增加。 – cfh
另外,中斷的限制是否覆蓋了整個「A」,即是否會有一些A的元素在這個操作之後不會被改變? – Divakar