Jas*_*071 2 python arrays sorting python-3.x
我目前有两个数组,其中一个具有多个重复值,另一个具有唯一值。
例如数组 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)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种更优雅的方法来执行此任务,以便代码能够处理 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:])
Run Code Online (Sandbox Code Playgroud)
输出
[array([10, 11]), array([12, 13]), array([14, 15])]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2578 次 |
| 最近记录: |