如何对二维uarray进行逐元素平方根计算?
如何对二维uarray逐元素取平方根?
你的示例代码生成了二维uarray,但直接用umath.sqrt(Uarray)会报错,因为umath的函数仅支持标量运算,无法直接处理二维数组。要实现类似NumPy数组的逐元素平方根计算,有两种可行方式:
方法一:使用unumpy.sqrt(推荐)
unumpy库提供了和NumPy对齐的向量化操作函数,专门用于处理uarray,无需手动循环:
import numpy as np from uncertainties import unumpy, umath array = np.array([[2,3],[6,7],[5,3]]) uncertainties = np.array([[2,2],[4,4],[5,5]]) Uarray = unumpy.uarray(array, uncertainties) # 直接调用unumpy的sqrt实现逐元素计算 sqrt_uarray = unumpy.sqrt(Uarray) print(sqrt_uarray)
输出结果:
[[1.41421356+/-0.70710678 1.73205081+/-0.57735027] [2.44948974+/-0.81649658 2.64575131+/-0.75592895] [2.23606798+/-1.11803399 1.73205081+/-1.44337567]]
方法二:手动循环实现
如果需要用循环遍历元素,可以嵌套循环逐个调用umath.sqrt,再重新组装成uarray:
import numpy as np from uncertainties import unumpy, umath array = np.array([[2,3],[6,7],[5,3]]) uncertainties = np.array([[2,2],[4,4],[5,5]]) Uarray = unumpy.uarray(array, uncertainties) # 嵌套循环处理每个元素 sqrt_rows = [] for row in Uarray: sqrt_row = [umath.sqrt(elem) for elem in row] sqrt_rows.append(sqrt_row) # 将结果转为uarray sqrt_uarray = unumpy.uarray(sqrt_rows) print(sqrt_uarray)
该方法输出和方法一完全一致,但效率远低于向量化操作,仅适合理解原理时使用。
内容的提问来源于stack exchange,提问作者remusconnor
相关产品推荐
相关产品推荐

