1

我有两个 unumpy 数组,形式为均值和标准。

import numpy as np
from uncertainties import unumpy

A = unumpy.uarray(np.array([2,4,6,8,10]), np.array([0.2,0.3,0.1,0.5,0.3]))
B = unumpy.uarray(np.array([6,10,15,0,40]), np.array([0.1,0.2,0.1,np.nan,0.3]))
A/B

现在,我想计算 A/B,但我收到“除以零”。但是,我只想对那些 B 不是 0 +/- nan 的值进行除法。在例外情况下,我只想将除法结果保留为 nan +/- nan 或简单地将它们全部删除。

注意:如果这些是简单数组而不是 uarray,我知道如何使用np.divideor np.where

4

1 回答 1

1

You can create a mask to remove them altogether from the array using unumpy.nominal_values. and checking if the nominal value is 0.


m = unumpy.nominal_values(B) != 0

A[m] / B[m]

array([0.3333333333333333+/-0.033793125168323446,
       0.4+/-0.031048349392520047, 0.4+/-0.007180219742846007,
       0.25+/-0.0077308230480331135], dtype=object)

If you want to mask your arrays based on a condition for your deviations, you can similarly use unumpy.std_devs

>>> unumpy.std_devs(B)
array([0.1, 0.2, 0.1, nan, 0.3])
于 2019-08-02T15:56:00.440 回答