【发布时间】:2021-09-10 14:39:46
【问题描述】:
假设我有以下数组
a = [1, 2, 3]
b = [4, 5, 6]
我创建了列表
c = [(1,4), (1,5), (1,6), (2,4), (3,5), (2,6), (3,4), (3,5), (3,6)]
如何创建如下两个列表:
a = [1, 1, 1, 2, 2, 2, 3, 3, 3]
b = [4, 5, 6, 4, 5, 6, 4, 5, 6]
【问题讨论】:
假设我有以下数组
a = [1, 2, 3]
b = [4, 5, 6]
我创建了列表
c = [(1,4), (1,5), (1,6), (2,4), (3,5), (2,6), (3,4), (3,5), (3,6)]
如何创建如下两个列表:
a = [1, 1, 1, 2, 2, 2, 3, 3, 3]
b = [4, 5, 6, 4, 5, 6, 4, 5, 6]
【问题讨论】:
你可以zip在这里解包元组。
a, b = zip(*c)
print(a) # (1, 1, 1, 2, 3, 2, 3, 3, 3)
print(b) # (4, 5, 6, 4, 5, 6, 4, 5, 6)
由于 numpy 被标记,所以可以直接使用np.repeat和np.tile生成需要的数据
a = [1, 2, 3]
b = [4, 5, 6]
a = np.repeat(a, 3)
b = np.tile(b, (3, ))
print(a) # array([1, 1, 1, 2, 2, 2, 3, 3, 3])
print(b) # array([4, 5, 6, 4, 5, 6, 4, 5, 6])
【讨论】:
a=[]
b=[]
for i in c:
a.append(i[0])
b.append(i[1])
【讨论】:
将c转换为numpy数组,第一列为第二列为b
c = np.array(c)
a = c[:, 0]
b = c[:, 1]
【讨论】: