Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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 从行中减去行的最小值_Python_Numpy_Numpy Ndarray - Fatal编程技术网

Python 从行中减去行的最小值

Python 从行中减去行的最小值,python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,我知道 a-a.min(轴=0) 将从列中的每个元素中减去每列的最小值。我想从行中的每个元素中减去每行中的最小值。我知道 a、 最小值(轴=1) 指定行内的最小值,但如何让减法按行而不是按列进行?(如何指定减法的轴?) 编辑:对于我的问题,a是NumPy中的2d数组。假设a是NumPy数组,您可以使用: new_a = a - np.min(a, axis=1)[:,None] 试试看: import numpy as np a = np.arange(24).reshape((4,6))

我知道

a-a.min(轴=0)

将从列中的每个元素中减去每列的最小值。我想从行中的每个元素中减去每行中的最小值。我知道

a、 最小值(轴=1)

指定行内的最小值,但如何让减法按行而不是按列进行?(如何指定减法的轴?)


编辑:对于我的问题,a是NumPy中的2d数组。

假设
a
是NumPy数组,您可以使用:

new_a = a - np.min(a, axis=1)[:,None]
试试看:

import numpy as np

a = np.arange(24).reshape((4,6))
print (a)
new_a = a - np.min(a, axis=1)[:,None]
print (new_a)
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]
[[0 1 2 3 4 5]
 [0 1 2 3 4 5]
 [0 1 2 3 4 5]
 [0 1 2 3 4 5]]
结果:

import numpy as np

a = np.arange(24).reshape((4,6))
print (a)
new_a = a - np.min(a, axis=1)[:,None]
print (new_a)
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]
[[0 1 2 3 4 5]
 [0 1 2 3 4 5]
 [0 1 2 3 4 5]
 [0 1 2 3 4 5]]
请注意,
np.min(a,axis=1)
返回行最小值的1d数组

我们可以使用
[:,None]
为其添加一个额外维度。然后它看起来像这个二维阵列:

array([[ 0],
       [ 6],
       [12],
       [18]])
当此2d数组参与减法运算时,它将被广播成
(4,6)
的形状,如下所示:

array([[ 0,  0,  0,  0,  0,  0],
       [ 6,  6,  6,  6,  6,  6],
       [12, 12, 12, 12, 12, 12],
       [18, 18, 18, 18, 18, 18]])

现在,在两个
(4,6)
数组之间进行元素相减。

如果只想使用
pandas
,只需使用
min(row)


指定
keepdims=True
以保留一个长度为1的维度,以代替
min
折叠的维度,从而使广播工作正常:

a - a.min(axis=1, keepdims=True)

这在运行时确定轴时特别方便,但可能比手动重新引入压缩维度更清晰,即使
1
值是固定的。

ValueError:min()的实现中不支持'keepdims'参数我明白了ValueError@AlessandroSolbiati:如果您有一个Pandas数据帧,那么是的,您会得到这样的错误,但是这种操作在Pandas数据帧上没有多大意义。我的答案是为NumPy数组编写的。提问者真的应该指定heck
a
是什么。什么类型的对象是
a
?2d numpy数组。