Python 对数组中的值进行分组

Python 对数组中的值进行分组,python,arrays,numpy,Python,Arrays,Numpy,我有一个大小为a*2的numpy数组。(a的典型尺寸为100)。第一列中的值介于x_最小值和x_最大值之间。第二列中是相应的y值。现在几乎所有的x值都是唯一的,所以我想对它们进行分组。像第一组一样,从最小值x_到1。第二组从x_1到x_2。(x_最小值1”y值与“1”y值的比例”是什么意思。你能给出一个输入和输出的匹配示例吗?“我只能考虑使用很多特定的if-else命令”-你能告诉我们代码是什么样子吗?y值是整数。因此,对于一组特定的x值,我可以有以下y值[1,1,2,2,4,5](如果排序)。

我有一个大小为a*2的numpy数组。(a的典型尺寸为100)。第一列中的值介于x_最小值和x_最大值之间。第二列中是相应的y值。现在几乎所有的x值都是唯一的,所以我想对它们进行分组。像第一组一样,从最小值x_到1。第二组从x_1到x_2。(x_最小值1”y值与“1”y值的比例。下面是示例数组的一小部分:

2.750000000000000000e+00,2.000000000000000000e+00
3.100000000000000089e+00,5.000000000000000000e+00
2.649999999999999911e+00,2.000000000000000000e+00
2.500000000000000000e+00,2.000000000000000000e+00
3.100000000000000089e+00,2.000000000000000000e+00
2.799999999999999822e+00,5.000000000000000000e+00
3.450000000000000178e+00,4.000000000000000000e+00
3.200000000000000178e+00,5.000000000000000000e+00
3.200000000000000178e+00,3.000000000000000000e+00
2.399999999999999911e+00,1.000000000000000000e+00 
输出数组可能如下所示:

1.5, 0
2.5, 0.2
3.5, 0.5

(这里的x_值是x_i和x_i+1面积的中点。)这里的输出示例显然不适合示例数组。你有什么办法可以轻松做到这一点吗。我只能考虑使用很多特定的if-else命令,这对一般情况没有多大帮助。

好的,我想我自己解决了这个问题。如果有人遇到类似问题并发现此问题,以下是解决方案:

numgroup = 5  # Number of Groups
dmimax = numpy.amax(dmivsstasta[:, 0])  # Gets x_largest
dmimin = numpy.amin(dmivsstasta[:, 0])  # Gets x_smallest
stamax = numpy.amax(dmivsstasta[:, 1])  # Gets y_largest
stepsize = (dmimax-dmimin)/5.0  # Determines size of a group

grouparray = numpy.zeros((5, stamax+1)) # Creates array in which everything is saved


for x in range(numgroup):
    grouparray[x, 0] = dmimin+stepsize/2.0+x*stepsize  # Saves midpositon of 
                                                         each group at first column
print(grouparray)  # Just to check values
print(dmimin)
print(dmimax)
print(stepsize)

for x1 in range(numgroup):  # Iterates over all values
    for x2 in range(rd):
        if (grouparray[x1, 0]-stepsize/2.0) <= dmivsstasta[x2, 0] 
        < (grouparray[x1, 0]+stepsize/2.0):
            grouparray[x1, dmivsstasta[x2, 1]] += 1

print(grouparray)
numgroup=5#组数
dmimax=numpy.amax(dmivsstata[:,0])#获取x#u最大值
dmimin=numpy.amin(dmivsstata[:,0])#获取x#u最小值
stamax=numpy.amax(dmivsstata[:,1])#得到y#u最大值
步长=(dmimax dmimin)/5.0#确定组的大小
grouparray=numpy.zeros((5,stamax+1))#创建保存所有内容的数组
对于范围内的x(numgroup):
grouparray[x,0]=dmimin+stepsize/2.0+x*stepsize#保存
每组在第一列
打印(grouparray)#仅用于检查值
打印(dmimin)
打印(dmimax)
打印(步长)
对于范围内的x1(numgroup):#迭代所有值
对于范围内的x2(rd):

如果(grouparray[x1,0]-stepsize/2.0)好,我想我自己解决了。如果有人遇到类似问题并发现此问题,以下是解决方案:

numgroup = 5  # Number of Groups
dmimax = numpy.amax(dmivsstasta[:, 0])  # Gets x_largest
dmimin = numpy.amin(dmivsstasta[:, 0])  # Gets x_smallest
stamax = numpy.amax(dmivsstasta[:, 1])  # Gets y_largest
stepsize = (dmimax-dmimin)/5.0  # Determines size of a group

grouparray = numpy.zeros((5, stamax+1)) # Creates array in which everything is saved


for x in range(numgroup):
    grouparray[x, 0] = dmimin+stepsize/2.0+x*stepsize  # Saves midpositon of 
                                                         each group at first column
print(grouparray)  # Just to check values
print(dmimin)
print(dmimax)
print(stepsize)

for x1 in range(numgroup):  # Iterates over all values
    for x2 in range(rd):
        if (grouparray[x1, 0]-stepsize/2.0) <= dmivsstasta[x2, 0] 
        < (grouparray[x1, 0]+stepsize/2.0):
            grouparray[x1, dmivsstasta[x2, 1]] += 1

print(grouparray)
numgroup=5#组数
dmimax=numpy.amax(dmivsstata[:,0])#获取x#u最大值
dmimin=numpy.amin(dmivsstata[:,0])#获取x#u最小值
stamax=numpy.amax(dmivsstata[:,1])#得到y#u最大值
步长=(dmimax dmimin)/5.0#确定组的大小
grouparray=numpy.zeros((5,stamax+1))#创建保存所有内容的数组
对于范围内的x(numgroup):
grouparray[x,0]=dmimin+stepsize/2.0+x*stepsize#保存
每组在第一列
打印(grouparray)#仅用于检查值
打印(dmimin)
打印(dmimax)
打印(步长)
对于范围内的x1(numgroup):#迭代所有值
对于范围内的x2(rd):

如果(grouparray[x1,0]-stepsize/2.0),我不明白你所说的“n>1”y值与“1”y值的比例”是什么意思。你能给出一个输入和输出的匹配示例吗?“我只能考虑使用很多特定的if-else命令”-你能告诉我们代码是什么样子吗?y值是整数。因此,对于一组特定的x值,我可以有以下y值
[1,1,2,2,4,5]
(如果排序)。现在我所指的比例是
4/2
,因为
4
值大于1,
2
值的值为1。我不明白“n>1”y值与“1”y值的比例”是什么意思。你能给出输入和输出的匹配示例吗?“我只能考虑使用很多特定的if-else命令”-你能告诉我们代码是什么样子吗?y值是整数。因此,对于一组特定的x值,我可以有以下y值
[1,1,2,2,4,5]
(如果排序)。现在我所指的比例是
4/2
,因为
4
的值大于1,
2
的值为1。