说我有一个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