Python 使用numpy拆分无序阵列
我使用下面的代码从csv文件中读取数组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,
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如果这个答案对你有帮助,请接受它,这样其他人就可以更容易地找到正确的答案。