我有一个二维数组,它看起来像这样:
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的功能,可以完成这件事。
你可以点我到任何这些文件?
您可以使用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])
你可以试试这个。
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)])