Python 如何从两个不同数组的元素计算返回数组?

Python 如何从两个不同数组的元素计算返回数组?,python,arrays,numpy,square-root,Python,Arrays,Numpy,Square Root,我有以下两个n元素的numpy数组: A = np.array([2 5 8 9 8 7 5 6]) B = np.array([8 9 6 5 2 8 5 7]) 我想获得数组C: C = np.array([sqrt(2^2+8^2) sqrt(5^2+9^2) ... sqrt(6^2+7^2)]) 也就是说,数组C将由n个元素组成;每个元素等于A中各个元素的平方根加上B中各个元素的平方 我尝试使用np。沿\u轴应用\u,但该函数似乎只针对一个数组设计。如注释中所述,您可以使用: C

我有以下两个n元素的numpy数组:

A = np.array([2 5 8 9 8 7 5 6])
B = np.array([8 9 6 5 2 8 5 7])
我想获得数组C:

C = np.array([sqrt(2^2+8^2) sqrt(5^2+9^2) ... sqrt(6^2+7^2)])
也就是说,数组C将由n个元素组成;每个元素等于A中各个元素的平方根加上B中各个元素的平方


我尝试使用
np。沿\u轴应用\u
,但该函数似乎只针对一个数组设计。

如注释中所述,您可以使用:

C = np.sqrt(A**2 + B**2)
或者您可以使用
理解
邮政编码

C = [sqrt(a**2 + b**2) for a, b in zip(A,B)]

如评论中所述,您可以使用:

C = np.sqrt(A**2 + B**2)
或者您可以使用
理解
邮政编码

C = [sqrt(a**2 + b**2) for a, b in zip(A,B)]

如果数组的大小很大,考虑使用<代码> NP.Suth,而不是<代码> **/COD>运算符。

In [16]: np.sqrt(np.square(A) + np.square(B))
Out[16]: 
array([  8.24621125,  10.29563014,  10.        ,  10.29563014,
         8.24621125,  10.63014581,   7.07106781,   9.21954446])

不过,执行时间的差异非常小

In [13]: ar = np.arange(100000)

In [14]: %timeit np.square(ar)
10000 loops, best of 3: 158 µs per loop

In [15]: %timeit ar**2
10000 loops, best of 3: 179 µs per loop

如果数组的大小很大,考虑使用<代码> NP.Suth,而不是<代码> **/COD>运算符。

In [16]: np.sqrt(np.square(A) + np.square(B))
Out[16]: 
array([  8.24621125,  10.29563014,  10.        ,  10.29563014,
         8.24621125,  10.63014581,   7.07106781,   9.21954446])

不过,执行时间的差异非常小

In [13]: ar = np.arange(100000)

In [14]: %timeit np.square(ar)
10000 loops, best of 3: 158 µs per loop

In [15]: %timeit ar**2
10000 loops, best of 3: 179 µs per loop

为什么不使用矢量化UFUNC:
np.sqrt(A**2+B**2)
?为什么不使用矢量化UFUNC:
np.sqrt(A**2+B**2)