Numpy数组替换for循环

时间:2015-10-14 13:52:49

标签: python arrays numpy vectorization

假设我有一个数组A [i,j],我想通过做类似的事来计算新的数量B [i,j]:

cb.setOnClickListener(new View.OnClickListener() {

                    public void onClick(View v) {
                      if(cb.isChecked()){
                            list.add(task.getTaskId());
                            i++;
                         }

                    }

}); 

我可以使用什么numpy功能将其转换为纯数组操作?

我在想np.cumprod,但目前还不清楚如何将系数纳入计算。

A.shape将是(n + 1,j)。

2 个答案:

答案 0 :(得分:2)

定义A_left = A[:-2, :]A_middle = A[1:-1, :]A_right = A[2:, :]

然后B = a*A_left + b*A_middle + c*A_right

答案 1 :(得分:1)

如果你不介意一些信号处理,你可以有一个通用的解决方案(通用的,你可以在abc旁边分配更多的元素。使用signal.convolve2dA扩展元素。

这类似于other solution,其中与这种情况相关的卷积理论以更详细的方式处理。实现看起来像这样 -

from scipy import signal

B = np.zeros_like(A)

kernel = np.array([a,b,c])[::-1,None]
B[1:-1]  = signal.convolve2d(A, kernel, boundary='symm', mode='valid')