Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以在numexpr中对多个轴求和?_Python_Arrays_Numpy_Numexpr - Fatal编程技术网

Python 是否可以在numexpr中对多个轴求和?

Python 是否可以在numexpr中对多个轴求和?,python,arrays,numpy,numexpr,Python,Arrays,Numpy,Numexpr,我正在尝试做如下事情: import numexpr as ne a = np.random.rand(10, 1) b = np.random.rand(1, 10) ne.NumExpr('sum(sum(a*b, 1), 0)').run(a, b) # <- error: reduction operations must occur last ne.NumExpr('sum(a*b, [1, 0])').run(a, b) # <- error: ValueError:

我正在尝试做如下事情:

import numexpr as ne

a = np.random.rand(10, 1)
b = np.random.rand(1, 10)
ne.NumExpr('sum(sum(a*b, 1), 0)').run(a, b) # <- error: reduction operations must occur last
ne.NumExpr('sum(a*b, [1, 0])').run(a, b) # <- error: ValueError: cannot encode axis
将numexpr导入为ne
a=np.rand.rand(10,1)
b=np.rand.rand(1,10)

NumExpr('sum(sum(a*b,1),0)')。运行(a,b)#使用两个表达式怎么样

import numpy as np
import numexpr as ne

a = np.random.rand(10, 1)
b = np.random.rand(1, 10)
ab = ne.evaluate('sum(a*b, 0)') # Calculates sum over first axis
print ne.evaluate('sum(ab, 0)') # <- Calculates sum over summed axis
将numpy导入为np
将numexpr作为ne导入
a=np.rand.rand(10,1)
b=np.rand.rand(1,10)
ab=ne.evaluate('sum(a*b,0)#计算第一个轴上的总和

打印ne.evaluate('sum(ab,0)#您可以使用numexpr在多个轴上求和,如下所示:

import numpy as np
import numexpr as ne

a = np.random.rand(10, 1)
b = np.random.rand(1, 10)
ne.evaluate('sum(x, 0)', {'x': ne.evaluate('sum(a*b, 1)')})

你当然可以改变乘法的结果,但我怀疑它会比两个轴上的np.sum快。但如果你能更详细地解释你想要什么,也许可以重写你的计算。什么意义上的重塑?我觉得这样的解决方案会增加内存需求。类似于(a*b)。重塑(a.shape[0]*b.shape[1])。sum()。这取决于你真正的目标是什么。你也可以通过下列方法得到同样的结果:np.sum(a)*np.sum(b)。这对numexpr问题没有多大帮助,但另一方面,它做了你想要的。我编辑了这个问题,也许是为了解决这个问题的动机。我为你的原始问题添加了一个答案。这个解决方案的问题是,
ab
必须存储在内存中,这在我的情况下并不总是可能的。