如何在Python中创建元素态幂值?(对于Matlab来说很容易,但我不知道如何在Python中实现这一点...)

gg58donl  于 2022-12-13  发布在  Matlab
关注(0)|答案(1)|浏览(131)

我想在Python中创建相同的结果,不要使用任何循环方法
我想做的Matlab代码:

x = [1 2 3 4];
y = [1 2 3];
z = 2.^(x'-y)

此Matlab代码的结果:

z =

    1.0000    0.5000    0.2500
    2.0000    1.0000    0.5000
    4.0000    2.0000    1.0000
    8.0000    4.0000    2.0000

有没有什么好的Python方法可以做到这一点?
我对这个困惑了很久......

r3i60tvu

r3i60tvu1#

你会想要使用numpy来实现这一点。它会做基于数组的数值运算,类似于你习惯用Matlab做的运算。
请注意,使用np.newaxis增加x的维数,以便阵列广播能够正确工作。广播类似于Matlab中的隐式展开。
另外,2.中的点并不像Matlab中的那样起作用(表示元素操作)。这只是为了强制2为浮点数。否则,你会得到关于将整数提升为负整数的错误。

import numpy as np
x = np.array([1, 2, 3, 4])
y = np.array([1, 2, 3])
z = 2.**(x[:,np.newaxis]-y)

array([[1.  , 0.5 , 0.25],
       [2.  , 1.  , 0.5 ],
       [4.  , 2.  , 1.  ],
       [8.  , 4.  , 2.  ]])

相关问题