Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Numpy数组中按行规范化元素_Python_Arrays_Numpy_Vectorization - Fatal编程技术网

Python 在Numpy数组中按行规范化元素

Python 在Numpy数组中按行规范化元素,python,arrays,numpy,vectorization,Python,Arrays,Numpy,Vectorization,我有以下numpy矩阵: A = [[a,b,c], [d,e,f], ...] 我需要沿行(最里面的维度)进行零法线化。因此,答案必须是: B = [[a-(a+b+c)/3, b-(a+b+c)/3, c-(a+b+c)/3], [d-(d+e+f)/3, e-(d+e+f)/3, f-(d+e+f)/3], ...] (如查找每行的平均值,并从行中的每个元素中减去if。) 每行中的元素数量可能会有所不同 是否有一种通用的情况可以在不使用循环的情况

我有以下numpy矩阵:

A = [[a,b,c],
     [d,e,f],
     ...]
我需要沿行(最里面的维度)进行零法线化。因此,答案必须是:

B = [[a-(a+b+c)/3, b-(a+b+c)/3, c-(a+b+c)/3],
     [d-(d+e+f)/3, e-(d+e+f)/3, f-(d+e+f)/3],
     ...]
(如查找每行的平均值,并从行中的每个元素中减去if。)

每行中的元素数量可能会有所不同


是否有一种通用的情况可以在不使用循环的情况下处理任意数量的元素?

这里有一种方法-

样本运行-

In [23]: A
Out[23]: 
array([[1, 6, 8],
       [3, 1, 6],
       [6, 2, 4],
       [7, 7, 2]])

In [24]: A - A.mean(axis=1,keepdims=1)
Out[24]: 
array([[-4.        ,  1.        ,  3.        ],
       [-0.33333333, -2.33333333,  2.66666667],
       [ 2.        , -2.        ,  0.        ],
       [ 1.66666667,  1.66666667, -3.33333333]])

In [25]: 1 - (1+6+8)/3.0
Out[25]: -4.0

In [26]: 6 - (1+6+8)/3.0
Out[26]: 1.0

In [28]: 8 - (1+6+8)/3.0
Out[28]: 3.0
In [23]: A
Out[23]: 
array([[1, 6, 8],
       [3, 1, 6],
       [6, 2, 4],
       [7, 7, 2]])

In [24]: A - A.mean(axis=1,keepdims=1)
Out[24]: 
array([[-4.        ,  1.        ,  3.        ],
       [-0.33333333, -2.33333333,  2.66666667],
       [ 2.        , -2.        ,  0.        ],
       [ 1.66666667,  1.66666667, -3.33333333]])

In [25]: 1 - (1+6+8)/3.0
Out[25]: -4.0

In [26]: 6 - (1+6+8)/3.0
Out[26]: 1.0

In [28]: 8 - (1+6+8)/3.0
Out[28]: 3.0