python - 根据数组中的唯一值拆分数组

标签 python arrays python-3.x sorting

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

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

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

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

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

b1 = [10, 11]

b2 = [12, 13]

b3 = [14, 15]

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


import itertools
import numpy as np
import matplotlib.tri as tri
import sys

a = [1, 1, 2, 2, 3, 3]
b = [10, 10, 20, 20, 30, 30]
b_1 = []
b_2 = []
b_3 = []



unique = []
for vals in a:
    if vals not in unique:
        unique.append(vals)

if len(unique) != 3:
    sys.exit("More than 3 'a' values  - check dimension")

for j in range(0,len(a)):
    if a[j] == unique[0]:
        b_1.append(c[j])
    elif a[j] == unique[1]:
        b_2.append(c[j])
    elif a[j] == unique[2]:
        b_3.append(c[j])
    else:
        sys.exit("More than 3 'a' values  - check dimension")
print (b_1)
print (b_2)
print (b_3)

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

最佳答案

鉴于您也在使用 numpy,这是使用 np.unique 的一种方法.您可以设置 return_index=True 以获取唯一值的索引,并使用它们将数组 b 拆分为 np.split :

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])]

关于python - 根据数组中的唯一值拆分数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55354634/

相关文章:

python - 如何确保在 python 多处理中父级崩溃时关闭父级管道?

python - 需要帮助编写一个简单的程序

php - json循环php,带有不带id的数组

java - 对另一个类中的非静态方法进行静态引用

c++ - 无法访问外部文件中定义的数组,W/O 关键字 "extern"

python - 属性错误 : 'SequenceGenerator' object has no attribute 'shape' Custom Sequence Generator Keras 2. 2.4

python - 在带数字的列表中查找按字母顺序排列的第一项

python - 打印来自 Python 生成器的所有结果

python - 欺诈事件通知问题 - 降低时间复杂度

Pandas 中的python异步read_sql