如何在Python中乘以3D numpy数组以获得2D numpy数组?

如何在Python中乘以3D numpy数组以获得2D numpy数组?,python,arrays,numpy,multidimensional-array,vectorization,Python,Arrays,Numpy,Multidimensional Array,Vectorization,假设我有以下数组A,其中右边是它的“.shape”: A.shape=(10000,10,10) 我想得到C.shape=(10000,10)这样: 对于A中的每个10x10矩阵(10000个矩阵中的每一个),它被减少到每行总和的1D向量(10,1),因此,最终结果是C.shape=(10000,10) 基本上,如果我们有形状(10,10)并乘以一个numpy.onevector(10,1),就可以了 但是,在处理3D数组(10000,10,10)时,如何用Python编写此代码 最终目标是形状

假设我有以下数组A,其中右边是它的“.shape”:

A.shape=(10000,10,10)

我想得到
C.shape=(10000,10)
这样: 对于A中的每个10x10矩阵(10000个矩阵中的每一个),它被减少到每行总和的1D向量(10,1),因此,最终结果是
C.shape=(10000,10)

基本上,如果我们有形状(10,10)并乘以一个
numpy.one
vector(10,1),就可以了

但是,在处理3D数组(10000,10,10)时,如何用Python编写此代码

最终目标是形状(10000,10,10)乘以某物(=(10000,10),其中(10000,10)的第二维度现在是前一个(10,10)矩阵的行和。

是的,您可以沿轴1使用
.sum()
(10000,10,10)
形状数组中获取它:

import numpy as np
a=np.ones(1000000).reshape(10000,10,10)
print(a.shape) # 10000,10,10
b=a.sum(axis=1)
print(b.shape) # 10000,10
c=b.sum(axis=1)
print(c.shape) # 10000,1

最简单的解决方案是:

import numpy as np
C = np.sum (A, axis=2)
备选解决方案1(减少):

如果要使用
reduce()
函数,请使用以下命令:

import numpy as np
C = np.add.reduce (A, 2)
此处,
2
表示通过
add
操作进行还原的轴

有关更多详细信息,请参阅

这可能只适用于
numpy
1.17及以上版本

备选解决方案2:(与1向量相乘)

使用
numpy.dot()


我不认为这是我想要的,至少当我手动浏览这样一个示例时,它不起作用
B = np.ones((10,), dtype=A.dtype)
C = np.dot (A,B)