我想在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方法可以做到这一点?
我对这个困惑了很久......
1条答案
按热度按时间r3i60tvu1#
你会想要使用numpy来实现这一点。它会做基于数组的数值运算,类似于你习惯用Matlab做的运算。
请注意,使用np.newaxis增加
x
的维数,以便阵列广播能够正确工作。广播类似于Matlab中的隐式展开。另外,
2.
中的点并不像Matlab中的那样起作用(表示元素操作)。这只是为了强制2
为浮点数。否则,你会得到关于将整数提升为负整数的错误。