python 在大型数据集上使用 numpy 或 pandas 的矩阵乘法

python matrix muultiplication using numpy or pandas on a large dataset

我有一个超过 6000 万行的输入数据集(实际上它是一个 H2o Frame,但它可以转换为 pandas 或 numpy 数组)。我需要用值列表对每一行进行减法、乘法和除法,如下所示

 Input dataset
    Col_0,      Col_1,      Col_2,      Col_3
    0.221,      0.331,      0.444,      0.555
    0.111,      0.222,      0.333,      0.444
    0.555,      0.323,      0.665,      0.999
    
To be processed with these values from a dictionary
    to_sub : [0.0002,       0.000004,       0.34334,        0.000005]
    to_mul : [1.333,        1.3433,     2.4334,     3.23232]
    to_div  : [1.8888,  1.6666,     1.7777,     1.89898]

like below
(Col_0-to_sub[0])*to_mul[0]/to_div[0],  (Col_1-to_sub[1])*to_mul[1]/to_div[1],  (Col_2-to_sub[2)*to_mul[2]/to_div[2], (Col_3-to_sub[3])*to_mul[3]/to_div[3]

现在,我使用嵌套的 for 循环来处理每个数组中相应值的每一行。在 python 中使用 numpy 或 pandas 或任何其他 python 库还有其他更有效的方法吗?也可以使这个过程通用,这意味着输入数据集中的列数和 to_sub、to_mul、to_div 中的值的数量可能因不同的过程而异。但是列数和数组值的数量对于相同的过程将保持不变。

IIUC:

ops = np.array([d['to_sub'], d['to_mul'], d['to_div']]
out = (df - ops[0]) * ops[1] / ops[2]
>>> out
       Col_0        Col_1        Col_2        Col_3
0   0.155827     0.266787     0.137788     0.944676
1   0.078196     0.178931    -0.014154     0.755739
2   0.391544     0.260339     0.440303     1.700424


>>> ops
array([[2.00000e-04, 4.00000e-06, 3.43340e-01, 5.00000e-06],   # sub
       [1.33300e+00, 1.34330e+00, 2.43340e+00, 3.23232e+00],   # mul
       [1.88880e+00, 1.66660e+00, 1.77770e+00, 1.89898e+00]])  # div