У меня есть список, который выглядит как:Как получить индексы из списка/ndarray?
[[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))
Тогда для каждой строки, я случайно выбрал индекс Col, который указывает значение больше 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
Кто-нибудь знает, как я исправить эту проблему? Или как мне сделать, чтобы достичь моей цели? Я просто хочу запустить код как можно быстрее, поэтому любые другие полезные идеи также более чем приветствуются.
Loop over 'zip (* np.nonzero (a> 2))'. –