为列表的不同部分分配标签

时间:2018-02-02 06:34:03

标签: python list numpy concatenation

我有以下列表:

a = numpy.array([1,2,3,4,5,6])

我需要简单地将值1,2,3分配到标签04,5,6标签1

我想到的第一件事是numpy.concatenate,但在我的案例中并没有弄清楚如何使用它。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以先将numpy数组转换为列表,然后收集索引和子列表,然后将它们添加到字典中:

>>> import numpy as np
>>> a = np.array([1,2,3,4,5,6]).to_list()
>>> a
[1, 2, 3, 4, 5, 6]
>>> ind = [0, 1]
>>> sublists = [a[i:i+3] for i in range(0, len(a), 3)]
>>> sublists
[[1, 2, 3], [4, 5, 6]]
>>> d = dict(zip(ind, sublists))
>>> d
{0: [1, 2, 3], 1: [4, 5, 6]}
>>> d[0]
[1, 2, 3]
>>> d[1]
[4, 5, 6]

答案 1 :(得分:0)

听起来你正在寻找这样的东西:

In [30]: a = np.array([1,2,3,4,5,6])

In [31]: labels = np.empty(len(a))

In [32]: labels[np.in1d(a, [1,2,3])] = 0

In [33]: labels[np.in1d(a, [4,5,6])] = 1

In [34]: result = np.vstack((a, labels)).T

In [35]: result
Out[35]: 
array([[ 1.,  0.],
       [ 2.,  0.],
       [ 3.,  0.],
       [ 4.,  1.],
       [ 5.,  1.],
       [ 6.,  1.]])