Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Numpy - Fatal编程技术网

“查找列”是指基于Python中最后一列的未排序二维数组

“查找列”是指基于Python中最后一列的未排序二维数组,python,arrays,numpy,Python,Arrays,Numpy,我希望找到2D NumPy数组中每列(最后一列除外)的平均值。最后一列有一个分类器/标识符。因此在不基于分类器对数组进行排序的情况下,我希望仅基于每个分类器找到每列的平均值。下面是2D矩阵的示例行 row1 = [1, 2, 3,...,0] row2 = [2, 3, 4,...,1] row3 = [3, 4, 5,...,0] row4 = [4, 5, 6,...,1] ... rowN = [9, 8, 7,...,0] 基于上面的行,我想要2D数组中每一列的平均值,仅用于分类器为0

我希望找到2D NumPy数组中每列(最后一列除外)的平均值。最后一列有一个分类器/标识符。因此在不基于分类器对数组进行排序的情况下,我希望仅基于每个分类器找到每列的平均值。下面是2D矩阵的示例行

row1 = [1, 2, 3,...,0]
row2 = [2, 3, 4,...,1]
row3 = [3, 4, 5,...,0]
row4 = [4, 5, 6,...,1]
...
rowN = [9, 8, 7,...,0]

基于上面的行,我想要2D数组中每一列的平均值,仅用于分类器为0,然后分类器为1的行。有没有一种类似python的方法可以不用if语句,也不用先对数组排序?

不使用
if
或排序的技巧是使用键作为索引,无论是数组还是
dict
,我在下面使用

使用NumPy,这是非常容易使用的


如果您想在不使用NumPy的情况下执行此操作,那么可能会得到两个顶级循环。首先,您可以按键对元素进行遍历和分组(作为矩阵或运行求和),然后您可以再次遍历以计算平均值。

如果不使用
或排序,那么这样做的诀窍是使用键作为索引,无论是数组还是
dict
,正如我下面使用的那样

使用NumPy,这是非常容易使用的


如果您想在不使用NumPy的情况下执行此操作,那么可能会得到两个顶级循环。首先,您可以按键对元素进行遍历和分组(作为矩阵或运行和),然后您可以再次遍历以计算平均值。

如果我正确理解了您的问题: 让我们假设这是您的2D numpy阵列:

import numpy as np
A =np.array([[1, 2, 3,0],[2, 3, 4,1], [3, 4, 5,0],[4, 5, 6,1]])
这是根据分类器的值(矩阵中的最后一列)获得每列平均值的方法

结果:

1-Classifier mean: [3. 4. 5.]
0-Classifier mean: [2. 3. 4.]

如果我正确理解了你的问题: 让我们假设这是您的2D numpy阵列:

import numpy as np
A =np.array([[1, 2, 3,0],[2, 3, 4,1], [3, 4, 5,0],[4, 5, 6,1]])
这是根据分类器的值(矩阵中的最后一列)获得每列平均值的方法

结果:

1-Classifier mean: [3. 4. 5.]
0-Classifier mean: [2. 3. 4.]

过滤所需分类器值上的行,并执行除最后一列外的所有列的平均值:

a   = # your matrix

classifier0 = a[:,-1]==0
mc0 = np.mean(a[classifier0,:-1],axis=0) 

classifier1 = a[:,-1]==1
mc1 = np.mean(a[classifier1,:-1],axis=0) 

过滤所需分类器值上的行,并执行除最后一列外的所有列的平均值:

a   = # your matrix

classifier0 = a[:,-1]==0
mc0 = np.mean(a[classifier0,:-1],axis=0) 

classifier1 = a[:,-1]==1
mc1 = np.mean(a[classifier1,:-1],axis=0) 

你在用NumPy吗?是的。我在用NumPy。不过,我也可以使用通用Python。你在使用NumPy吗?是的。我在用NumPy。不过,我也可以使用通用Python。谢谢Mok!我甚至不知道数组的布尔索引是可能的。我读了一些文档,我能想到很多对我有用的问题。工具箱中的另一个工具。你可以用NumPy的索引功能和相关方法做很多很酷的事情。还要注意,在最近的NumPy版本中,一些函数(如)可以将布尔数组作为
where
参数,告诉它操作哪些元素。(如果你喜欢我的回答,请接受。)谢谢莫!我甚至不知道数组的布尔索引是可能的。我读了一些文档,我能想到很多对我有用的问题。工具箱中的另一个工具。你可以用NumPy的索引功能和相关方法做很多很酷的事情。还要注意,在最近的NumPy版本中,一些函数(如)可以将布尔数组作为
where
参数,告诉它操作哪些元素。(如果你喜欢我的回答,请接受。)