python - 数组和向量的 numpy 逐元素乘法

标签 python arrays numpy

我想做这样的事情:

a =  # multi-dimensional numpy array
ares = # multi-dim array, same shape as a
a.shape
>>> (45, 72, 37, 24)  # the relevant point is that all dimension are different
v = # 1D numpy array, i.e. a vector
v.shape
>>> (37)  # note that v has the same length as the 3rd dimension of a
for i in range(37):
    ares[:,:,i,:] = a[:,:,i,:]*v[i]

我认为必须有一种更紧凑的方法来使用 numpy 来执行此操作,但我还没有弄清楚。我想我可以复制 v 然后计算 a*v,但我猜还有比这更好的方法。所以我需要“在给定的轴上”进行元素明智的乘法,可以这么说。任何人都知道我该怎么做?谢谢。 (顺便说一句,我确实找到了一个重复的问题,但是由于 OP 那里的特殊问题的性质,讨论非常简短,并且被追踪到其他问题。)

最佳答案

还有一个:

b = a * v.reshape(-1, 1)

恕我直言,这比 transposeeinsum 甚至 v[:, None] 更具可读性,但请选择适合的那个你的风格。

关于python - 数组和向量的 numpy 逐元素乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19388152/

相关文章:

python - argparse:将用户输入映射到定义的常量

python - 在 Django 中使用聚合获取最小值字段名称

java - 在二维字符数组 Java 中存储矩阵

python - 这段用于正则化线性回归的 Python 代码有什么问题?

python - sleep 无法在需要的地方发挥作用

arrays - 使用指向指针数组的指针进行合并排序不起作用

java - 数组未按预期打印

python - 在列表中查找重复项

python - 如何沿矩阵轴执行滚动求和?

Python 脚本,参数未传输到脚本