我有这种类型的矩阵(模拟浮动汇率)
我想计算浮动腿的收益,但我想返回一个矩阵,其中: - 当值为负时,使用公式(其中应用该点的比率)计算收益 - 当值为正时,使用另一个公式计算收益(其中应用该点的比率)
我能够通过仅应用一个公式来计算矩阵,但是我无法通过应用IF条件得到我想要实现的结果。
任何建议表示赞赏!谢谢
燕姿
答案 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]])