Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 使用numpy拆分无序阵列_Python_Arrays_Numpy - Fatal编程技术网

Python 使用numpy拆分无序阵列

Python 使用numpy拆分无序阵列,python,arrays,numpy,Python,Arrays,Numpy,我使用下面的代码从csv文件中读取数组 x,y = np.loadtxt(filename, delimiter=';', unpack=True, skiprows=1, usecols=(1,2)) 是x和数组,它是这样的[5,5,5,0,1,1,2,3,3,4,5,5,5] 和y[111.0111.1111.2111.3111.4111.5…] 我想使用x相应地拆分两个数组。 因此,我的预期输出如下: [1,1,1,1,1..][111.4,111.5,111.6...] [2,2,2,

我使用下面的代码从csv文件中读取数组

x,y = np.loadtxt(filename, delimiter=';', unpack=True, skiprows=1, usecols=(1,2))
是x和数组,它是这样的[5,5,5,0,1,1,2,3,3,4,5,5,5] 和y[111.0111.1111.2111.3111.4111.5…]

我想使用x相应地拆分两个数组。 因此,我的预期输出如下:

[1,1,1,1,1..][111.4,111.5,111.6...]
[2,2,2,2,..][111.10,111.11,111.12...]
[5,5,5,5,5,...][111.0,111.1,111.2...111.20,111.21,111.22]
...
这样我就可以在x值和y值之间进行选择了


我尝试过使用np.split
np.split(x,[21,1,2,3…])
,但它似乎对我不起作用。

尽管我的解决方案在性能方面可能不是最有效的,但您可以将其用作未来研究的起点

import numpy as np

# some dummy data
x = np.array([5,5,5,0,1,1,2,3,3,4,5,5,5])
y = np.array([0,1,2,3,4,5,6,7,8,9,10,11,12])

def split_by_ids(data: np.array, ids: np.array):
    splits = []  # result storage
    # get unique indicies with their counts from ids array
    elems, counts = np.unique(ids, return_counts=True)
    # go through each index and its count
    for index, count in zip(elems, counts):
        # create array of same index and grab corresponding values from data
        splits.append((np.repeat(index, count), data[ids == index]))

    return splits
    
split_result = split_by_ids(y, x)
for ids, values in split_result:
    print(f'Ids: {ids}, Values: {values}')
上述代码导致

Ids: [0], Values: [3]
Ids: [1 1], Values: [4 5]
Ids: [2], Values: [6]
Ids: [3 3], Values: [7 8]
Ids: [4], Values: [9]
Ids: [5 5 5 5 5 5], Values: [ 0  1  2 10 11 12]

@Yassin如果这个答案对你有帮助,请接受它,这样其他人就可以更容易地找到正确的答案。