首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Python中的三维数字数组乘成二维数字数组?

如何将Python中的三维数字数组乘成二维数字数组?
EN

Stack Overflow用户
提问于 2020-11-07 10:47:26
回答 2查看 53关注 0票数 0

假设我有以下数组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)矩阵的行和。

EN

回答 2

Stack Overflow用户

发布于 2020-11-07 10:59:52

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

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2020-11-07 12:56:15

最简单的解决办法是:

代码语言:javascript
复制
import numpy as np
C = np.sum (A, axis=2)

替代解决方案1(减少):

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

代码语言:javascript
复制
import numpy as np
C = np.add.reduce (A, 2)

在这里,2表示通过add操作进行还原的轴。

有关详细信息,请参阅

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

替代方案2:(与1向量相乘)

使用numpy.dot()

代码语言:javascript
复制
B = np.ones((10,), dtype=A.dtype)
C = np.dot (A,B)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64726866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档