python - 向量化二维 numpy 数组的函数
问题描述
我想计算我的二维数组的对数比率,例如
a = np.array([[3,2,1,4], [2,1,1,6], [1,5,9,1], [7,8,2,2], [5,3,7,8]])
公式为ln(x/g(x)),其中 g(x) 是每行的几何平均值。我像这样执行它:
logvalues = np.array(a) # the values will be overwritten through the code below.
for i in range(len(a)):
row = np.array(a[i])
geo_mean = row.prod()**(1.0/len(row))
flr = lambda x: math.log(x/geo_mean)
logvalues = np.array([flr(x) for x in row])
我想知道是否有任何方法可以对上述行进行矢量化(最好不引入其他模块)以提高效率?
解决方案
这应该可以解决问题:
geo_means = a.prod(1)**(1/a.shape[1])
logvalues = np.log(a/geo_means[:, None])
推荐阅读
- python - 图顶点排序度问题:找到k-ordering
- android - Toast Android 11 自定义
- excel - 循环以从列中的单元格复制数据
- tensorflow - Yolov2 Frozen Graph To Tensorrt 图
- react-native - 如何将数据传递到详细信息屏幕?我正在尝试,但它给了我这个错误:无效尝试解构不可迭代实例
- php - 无法将 Jetstream 包安装到 Laravel 项目
- javascript - 如何为从 localStorage 返回的值添加空检查
- r - 数据框中的中位数
- python - 不同结果的逆转条件
- python - Thespian 演员中的无限异步循环