如何使用从公式派生的值替换矩阵中的负值和正值

时间:2016-06-05 18:48:53

标签: python matrix

我有这种类型的矩阵(模拟浮动汇率)

enter image description here

我想计算浮动腿的收益,但我想返回一个矩阵,其中: - 当值为负时,使用公式(其中应用该点的比率)计算收益 - 当值为正时,使用另一个公式计算收益(其中应用该点的比率)

我能够通过仅应用一个公式来计算矩阵,但是我无法通过应用IF条件得到我想要实现的结果。

任何建议表示赞赏!谢谢

燕姿

2 个答案:

答案 0 :(得分:1)

使用面具:

matrix = [...]
result = numpy.zeros_like(matrix)
mask = matrix < 0
result[mask] = formula_A(matrix[mask])
mask = matrix > 0
result[mask] = formula_B(matrix[mask])

答案 1 :(得分:0)

您可以使用np.where。在下面的示例中,foo应用于矩阵为正的位置,bar应用于矩阵为负的位置。

def foo(m):
    return m + 10
def bar(m):
    return m - 10
np.random.seed(0)
m = np.random.randn(3, 3)
>>> m
array([[ 1.76405235,  0.40015721,  0.97873798],
       [ 2.2408932 ,  1.86755799, -0.97727788],
       [ 0.95008842, -0.15135721, -0.10321885]])

>>> np.where(m > 0, foo(m), bar(m))
array([[ 11.76405235,  10.40015721,  10.97873798],
       [ 12.2408932 ,  11.86755799, -10.97727788],
       [ 10.95008842, -10.15135721, -10.10321885]])