假设我有一个2d数组(x,y)和函数z=F(x,y)的值
x = y = array([ 1., 2., 3., 4., 5.])
z= array([[ 1., 2., 3., 4., 5.],
[ 2., 4., 6., 8., 10.],
[ 3., 6., 9., 12., 15.],
[ 4., 8., 12., 16., 20.],
[ 5., 10., 15., 20., 25.]])
现在我要找到的是积分$p(w)=\int F(x,y)\delta(x-y=w)dx dy$ 为此,我通过w=x-y来构造w矩阵 这让我觉得
^{pr2}$现在我必须把z的所有值加起来,比如w=3,我应该得到4+10=14。在
问题是做最后一部分最好的方法是什么?
。这是一个例子,数组通常是不相等的,不具有本例中的对称性。 我想迭代是一个不好的选择,因为这些数组相当大。在
这看起来是使用^{} 和numpy的新(v1.8.2)^{} 函数的好地方:
w == 3
生成一个布尔数组,表示w
的哪些位置有3。z[w == 3]
给出了一个与这些位置相对应的{sum()
将它们相加。在NumPy tutorial中你会学到很多这类东西,在NumPy reference中你会学到更多。在相关问题 更多 >
编程相关推荐