假设我有以下数组A,其中右边是它的‘.side’:
A.shape = (10000, 10, 10)
我想得到这样的C.shape = (10000,10):对于A中的每一个10x10矩阵(在10000个矩阵中),它被简化为每一行之和的一维向量(10,1),因此,最终的结果是C.shape = (10000,10)。
本质上,如果我们有形状(10,10)并乘以一个numpy.ones向量(10,1),就可以完成这项工作。
但是在处理3D数组(10000,10,10)时,如何用Python编写这个呢?
最终目标是形状(10000,10)乘以= (10000,10),其中(10000,10)的第二维现在是前(10,10)矩阵的行和。
发布于 2020-11-07 10:59:52
是的,您可以使用.sum()沿轴1从(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发布于 2020-11-07 12:56:15
最简单的解决办法是:
import numpy as np
C = np.sum (A, axis=2)替代解决方案1(减少):
如果要使用reduce()函数,请使用以下命令:
import numpy as np
C = np.add.reduce (A, 2)在这里,2表示通过add操作进行还原的轴。
有关详细信息,请参阅这
这可能只适用于1.17版及以上版本的numpy
替代方案2:(与1向量相乘)
使用numpy.dot()
B = np.ones((10,), dtype=A.dtype)
C = np.dot (A,B)https://stackoverflow.com/questions/64726866
复制相似问题