У меня есть список, который выглядит так:
[[0,1,2], [1,2,3], [2,3,4], [3,4,5]]
Я могу сделать это в массиве, например:
array([[0,1,2],
[1,2,3],
[2,3,4],
[3,4,5]])
Итак, все вместе у меня есть 4 строки, и каждая строка имеет 3 столбца. Теперь я хочу найти индексы всех элементов, которые больше 2, поэтому для всей матрицы индексы должны быть:
((1,2),(2,1),(2,2),(3,1),(3,2),(3,3))
Затем для каждой строки я случайным образом выбираю индекс столбца, который указывает значение больше 2. Теперь мой код выглядит так:
a = np.array([[0,1,2],[1,2,3],[2,3,4],[3,4,5]]
out = np.ones(4)*-1
cur_row = 0
col_list = []
for r,c in np.nonzero(a>2):
if r == cur_row:
col_list.append(c)
else:
cur_row = r
shuffled_list = shuffle(col_list)
out[r-1] = shuffled_list[0]
col_list = []
col_list.append(c)
Я надеюсь получить выход, который выглядит так:
array([-1, 2, 1, 2])
Однако теперь, когда я запускаю свой код, он показывает
ValueError: too many values to unpack
Кто-нибудь знает, как мне решить эту проблему? Или как мне поступить, чтобы достичь своей цели? Я просто хочу запустить код как можно быстрее, поэтому любые другие хорошие идеи также более чем приветствуются.
zip(*np.nonzero(a>2))
. - person Ashwini Chaudhary   schedule 11.05.2015