Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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 根据数组中的唯一值拆分数组_Python_Arrays_Python 3.x_Sorting - Fatal编程技术网

Python 根据数组中的唯一值拆分数组

Python 根据数组中的唯一值拆分数组,python,arrays,python-3.x,sorting,Python,Arrays,Python 3.x,Sorting,我目前有两个数组,其中一个有几个重复的值,另一个有唯一的值 例如数组1:a=[1,1,2,2,3,3] Eg数组2:b=[10,11,12,13,14,15] 我正在用python开发一个代码,它查看第一个数组,区分所有相同的元素并记住索引。将创建一个新数组,其中包含这些索引处的数组b的元素 例如:由于数组“a”在位置1,2处有三个唯一的值。。。3,4... 5,6,然后将创建三个新数组,使其包含位于位置1,2处的数组b的元素。。。3,4... 5,6. 因此,结果将是三个新阵列: b1=[10

我目前有两个数组,其中一个有几个重复的值,另一个有唯一的值

例如数组1:a=[1,1,2,2,3,3]

Eg数组2:b=[10,11,12,13,14,15]

我正在用python开发一个代码,它查看第一个数组,区分所有相同的元素并记住索引。将创建一个新数组,其中包含这些索引处的数组b的元素

例如:由于数组“a”在位置1,2处有三个唯一的值。。。3,4... 5,6,然后将创建三个新数组,使其包含位于位置1,2处的数组b的元素。。。3,4... 5,6. 因此,结果将是三个新阵列:

b1=[10,11]

b2=[12,13]

b3=[14,15]

我已经成功地开发了一个代码,但是,它只适用于数组“a”中有三个唯一值的情况。如果数组“a”中存在或多或少的唯一值,则必须对代码进行物理修改


进口itertools
将numpy作为np导入
将matplotlib.tri导入为tri
导入系统
a=[1,1,2,2,3,3]
b=[10,10,20,20,30,30]
b_1=[]
b_2=[]
b_3=[]
唯一=[]
对于a中的VAL:
如果VAL不是唯一的:
唯一。附加(VAL)
如果len(唯一)!=三:
系统退出(“超过3个“a”值-检查维度”)
对于范围(0,len(a))内的j:
如果a[j]==唯一[0]:
b_1.追加(c[j])
elif a[j]==唯一[1]:
b_2.追加(c[j])
elif a[j]==唯一[2]:
b_3.追加(c[j])
其他:
系统退出(“超过3个“a”值-检查维度”)
印刷品(b_1)
打印(b_2)
印刷品(b_3)

我想知道是否有更优雅的方法来执行此任务,以便代码能够处理n个唯一值。

鉴于您也在使用numpy,这里有一种方法使用。您可以设置
return\u index=True
以获取唯一值的索引,并使用它们拆分数组
b

输出


您可以使用函数
groupby()


@JasKa071别忘了你可以投票/接受答案。看见
a = np.array([1, 1, 2, 2, 3, 3])
b = np.array([10, 11, 12, 13, 14, 15])

u, s = np.unique(a, return_index=True)
np.split(b,s[1:])
[array([10, 11]), array([12, 13]), array([14, 15])]
from itertools import groupby
from operator import itemgetter

a = [1, 1, 2, 2, 3, 3]
b = [10, 11, 12, 13, 14, 15]

[[i[1] for i in g] for _, g in groupby(zip(a, b), key=itemgetter(0))]
# [[10, 11], [12, 13], [14, 15]]