我有两个相同维数的数组F
和P
F = np.array([[1, 4, 5],
[-5, 180, 9],
[200, 3, 7]])
P = np.array([[11, 3, 9],
[4, 2, 77],
[33, 4, 66]])
我想将矩阵F
的每个元素F(i,j)
与矩阵P
的每个元素P(i,j)
相除,仅当F(i,j)<100
.
np.where(F<100)
(array([0, 0, 0, 1, 1, 2, 2]), array([0, 1, 2, 0, 2, 1, 2]))
这是一个可能的解决方案:
(F < 100) * F / P + (F >= 100) * F
,或者说等价于:
((F < 100) / P + (F >= 100)) * F
使用您提供的数据,您将得到以下结果:
array([[ 9.09090909e-02, 1.33333333e+00, 5.55555556e-01],
[-1.25000000e+00, 1.80000000e+02, 1.16883117e-01],
[ 2.00000000e+02, 7.50000000e-01, 1.06060606e-01]])
你可以在除法中使用where条件,在我的例子中,我使用了F/P
而不是P/F
import pandas as pd
import numpy as np
F = np.array([[1, 4, 5],
[-5, 180, 9],
[200, 3, 7]])
P = np.array([ [11, 3, 9],
[4, 2, 77],
[33, 4, 66]])
# Construct pandas DataFrame instances
dataFrame1 = pd.DataFrame(data=F);
dataFrame2 = pd.DataFrame(data=P);
res = dataFrame1.div(dataFrame2).where(dataFrame1 < 100, dataFrame1);
输出0 1 2
0 0.090909 1.333333 0.555556
1 -1.250000 180.000000 0.116883
2 200.000000 0.750000 0.106061