numpy:将 numpy 数组的每个元素与另一个数组的每个元素相加 [英] numpy: summing every element of numpy array with every element of another

查看:59
本文介绍了numpy:将 numpy 数组的每个元素与另一个数组的每个元素相加的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从 Matlab 开始学习 Python.在Matlab中,给定两个长度不一定相同的向量,如果一个是行向量,一个是列向量,就可以相加.

v1 = [1 3 5 7]v2 = [2 4 6]'v1 + v2答案 =3 5 7 95 7 9 117 9 11 13

我试图在给定两个 numpy 数组的情况下在 python 中产生相同的行为.首先想到的是循环:

将 numpy 导入为 npv1 = np.array([1,3,5,7])v2 = np.array([2,4,6])v3 = np.empty((3,4,))v3[:] = np.nan对于范围内的 i (0,3):v3[i,:] = v1 + v2[i]

有没有更简洁高效的方法?

解决方案

import numpy as npv1 = np.array([1, 3, 5, 7])v2 = np.array([2, 4, 6])v1 + v2[:, 无]

您可以阅读有关numpy 的广播规则的更多信息.>

I'm coming to python from Matlab. In Matlab, given two vectors that are not necessarily the same length, they can be added if one is a row vector and one is a column vector.

v1 = [1 3 5 7]

v2 = [2 4 6]'

v1 + v2

ans =

 3     5     7     9
 5     7     9    11
 7     9    11    13

I am trying to produce the same behavior in python given two numpy arrays. Looping first came to mind:

import numpy as np
v1 = np.array([1,3,5,7])
v2 = np.array([2,4,6])
v3 = np.empty((3,4,))
v3[:] = np.nan

for i in range(0,3):
    v3[i,:] = v1 + v2[i]

Is there a more concise and efficient way?

解决方案

import numpy as np

v1 = np.array([1, 3, 5, 7])
v2 = np.array([2, 4, 6])

v1 + v2[:, None]

You can read more about numpy's broadcasting rules.

这篇关于numpy:将 numpy 数组的每个元素与另一个数组的每个元素相加的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆