Python:如何根据条件划分数组的元素?



我有两个相同维数的数组FP

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

最新更新