如何在Python中无循环实现元素级幂运算?对标Matlab结果
Python实现Matlab无循环的向量化指数运算
当然可以用Python的numpy库实现,完全不需要循环,利用numpy的广播机制就能和Matlab的逻辑一致:
import numpy as np x = np.array([1, 2, 3, 4]) y = np.array([1, 2, 3]) # 将x转为列向量,等价于Matlab中的x' x_col = x.reshape(-1, 1) z = 2 ** (x_col - y) print(z)
运行结果:
[[1. 0.5 0.25] [2. 1. 0.5 ] [4. 2. 1. ] [8. 4. 2. ]]
原理说明
x.reshape(-1,1)将一维数组x转换为(4,1)的列向量,和Matlab里的转置操作x'效果相同。- numpy的广播机制会自动把(4,1)的列向量和(1,3)的行向量扩展为(4,3)的矩阵,逐元素执行减法运算,再对每个元素计算2的幂,全程不需要任何循环,效率和Matlab的向量化操作一致。
内容的提问来源于stack exchange,提问作者Minnie
相关产品推荐
相关产品推荐

