我需要将一个数组的4列合并为一列
array([[0, 0, 0, 1],
[1, 0, 0, 0],
...,
[0, 1, 0, 0]])
结果应为:
array([3, 0, ..., 1])
特别是,我希望为那些值为1的列获取列索引(从0开始,以3结尾)。
答案 0 :(得分:1)
基于每行只包含一个' 1'值,只有零和1。
编辑:出于某种原因,我在试图澄清问题时失去了与numpy的联系。如果使用numpy,这将无效,但我会留下它,以防你只是在寻找带有列表的东西。a = [[0, 0, 0, 1],
[1, 0, 0, 0],
[1, 0, 0, 0],
[0, 1, 0, 0]]
# One way
single_list = []
for x in a:
single_list.append(x.index(1))
# or
using_list_comprehension = [x.index(1) for x in a]
答案 1 :(得分:0)
如果每一行都有一个唯一的行,则以下内容将起作用:
np.where(a == 1)[1]
例如:
>>> a = np.array([[0, 0, 0, 1], [1, 0, 0, 0], [0, 1, 0, 0]])
>>> np.where(a == 1)[1]
array([3, 0, 1])
我们可以从以下方面看到它:
>>> np.where(a == 1)
(array([0, 1, 2]), array([3, 0, 1]))
array([0, 1, 2])
是具有一个值的行索引,array([3, 0, 1]
是列索引。这意味着我们在坐标(0, 3), (1, 0), (2, 1)
处有一个值。因为每一行都有一个唯一的值1,所以每行都会有一个列索引。