2016-10-31 2 views
0

У меня есть список под названием L. Он имеет C элементов.Как правильно найти значение в индексе в nd массиве и сохранить его как список в python?

У меня есть n-й массив, который называется X. X имеет булевы данные (0 или 1). Он имеет размерность (20, C). Есть 20 списков с каждым списком, имеющим число C элементов

Я хочу найти каждый индекс, который имеет значение 1 в X. Затем я хочу значение в этом же индексе в списке L и, наконец, сохраните это значение из L в другом n-м массиве. я написать следующий код

emptylist=[]

for index,value in np.ndenumerate(X): #this index is a tuple like (0,3)

tuple_to_list=list(i) 
if value == 1: 

    emptylist.append (L[tuple_to_list[1]]) #error 

программа не прекратит работу. Можете ли вы посоветовать мне улучшить этот код?

ответ

0

последняя строка должна быть:

empylist.append(L[index[0]]) 

, и я не вижу, что ваш tuple_to_list необходим для

решение, использующее только массивы будут распределены следующим образом:

L = list(np.random.rand(20)) # gives a List of radom values (to be compatible to the question) 
La = np.array(L) 
X = randint(0,5,(20,101)) # make an array having values from 0...4 
emptylist = La[np.where(X==1)[0]] #gives those rows of L where rows of X contain 1 

хотя имя пустое уже не подходит.

+0

Поскольку индекс является кортежем, я преобразовывал его в список для доступа ко второму элементу. Можете ли вы помочь мне со скоростью? Это занимает очень много времени, чтобы запустить его –

+0

вы также можете получить доступ ко второму элементу кортежа без проблем – dnalow

+0

, насколько велика ваша массив? – dnalow

Смежные вопросы