使用numpy的计算是什么意思?

问题描述 投票:4回答:2

我有一个二维数组,它看起来像这样:

array = [[23 ,89, 4, 3, 0],[12, 73 ,3, 5,1],[7, 9 ,12, 11 ,0]]

当最后一列始终是所有行0或1。我的目标是计算两个手段柱0,其中在最后一列的值是0,均值之一将是,当最后一列的值将是1一个平均会。

例如对于给定的样品阵列上方:平均1:15(平均为0列,其中最后一列是所有行0)的意思是2:12(平均为0的列的所有行,其中最后一列是1)

我曾经尝试这样做(其中火车是我输入数组的名字):

 mean_c1_0=np.mean(train[:: , 0])
 variance_c1_0=np.var(train[:: , 0])

这让我均值和方差为列0的LL值。

我总是可以引入一个新的for循环和几个if条件继续检查最后一列,然后才在列0添加相应的值,但我正在寻找一种有效的方法。由于我是新来的Python我希望如果有一个numpy的功能,可以完成这件事。

你可以点我到任何这些文件?

python numpy
2个回答
7
投票

您可以使用numpy的字节数组过滤。 (见How can I slice a numpy array by the value of the ith field?),以及刚刚获得平均的方式。没有循环需要。

import numpy
x = numpy.array([[23, 89, 4, 3, 0],[12, 73, 3, 5, 1],[7, 9, 12, 11, 0]])
numpy.mean(x[x[:,-1]==1][::,0])
numpy.mean(x[x[:,-1]==0][::,0])

1
投票

你可以试试这个。

mean_of_zeros = np.mean(numpy_array[np.where(numpy_array[:,-1] == 0)])

mean_of_ones = np.mean(numpy_array[np.where(numpy_array[:,-1] == 1)])
© www.soinside.com 2019 - 2024. All rights reserved.