Прочитать и заказать вектор из txt файла - PullRequest
0 голосов
/ 21 мая 2018

Это вопрос новичка, но мне не удается уйти от ошибки.У меня есть текстовый файл со значением, написанным как: [ 2 3 4 5 1] и другой вектор, в котором я пишу порядок, в котором я хочу изменить порядок первого вектора.
Так что, если вектор порядка равен [ 5 3 2 1 4 ], первый вектор станет [ 1 4 3 2 5 ],
Идея заключалась в том, чтобы импортировать файл file.txt с np.loadtxt, а затем:

for i in range (5):
    a=int('order[i]')
    b = a
    c = suono[b]
    suono2.write[i] = c
    suono2.save(c)
    emp =  "" 
    suono2.save(emp)
    suono2.close

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Если вы хотите использовать numpy, что не является идеей плохо , если вы работаете исключительно с числовыми массивами, тогда вы можете использовать простое индексирование.

Вам просто нужнобудьте осторожны, чтобы вычесть единицу, поскольку индексы начинаются с 0. Это, вероятно, является причиной вашей ошибки.

import numpy as np
lst= np.loadtxt("vector.txt")
lst = lst.astype(int)
order = np.loadtxt("orderSet.txt")
order = order.astype(int)
# alternative is A = np.array([ 2, 3, 4, 5, 1])
#order = np.array([ 5, 3, 2, 1, 4 ])

res = A[order-1]

print(res)

[1 4 3 2 5]
0 голосов
/ 21 мая 2018

Вы можете использовать getitem

 mylist = range(10)
 indexes= [1,3,5]
 print(list(map(l.__getitem__, indexes)))

В Python 3

>>> mylist = range(10)
>>> indexes= [1,3,5]
>>> print(list(map(l.__getitem__, indexes))) 
[1, 3, 5]
0 голосов
/ 21 мая 2018

Я не уверен, нужно ли вам вообще использовать numpy.

С голым python: просто перестройте свой список, используя понимание списка, итерируя по списку "order" (минус 1, потому что pythonсписки начинаются с 0):

lst = [ 2, 3, 4, 5, 1]
order = [ 5, 3, 2, 1, 4 ]

result = [lst[i-1] for i in order]

print(result)

результат:

[1, 4, 3, 2, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...