У меня есть два массива A
и B
. У меня есть список indices
.
Я хочу найти каждый элемент indices
в A
и вывести соответствующие значения из B
. Я представляю текущие и ожидаемые результаты.
import numpy as np
A=np.array([[ 0, 4],
[ 0, 5],
[1,6]])
B=np.array([[9.16435586e-05],
[1.84193464e-14],
[1.781909182e-5]])
indices= [[0,4],[1,6]]
for i in range(0,len(indices)):
A=indices[i]
print(A)
Текущий выход:
[0, 4]
[1, 6]
Ожидаемый результат:
[[0,4],[1,6]]
[[9.16435586e-05],[1.781909182e-5]]
Это верно. Я действительно не знаю, как указать порядок, чтобы напечатать значения из B
.
но indices= [[0,4],[1,6]]
содержит фрагменты A
, а не индексы
Вы можете называть все, что вам нравится. По сути, я хочу найти [0,4]
из indices
в A
и вывести соответствующее значение из B
, то есть [9.16435586e-05]
. Аналогично для [1,6]
.
Чтобы создать список на основе соответствия индекса, я бы сделал это так, вы также можете изменить это в зависимости от вашего варианта использования.
new_list = []
for i, elem in enumerate(A):
if list(elem) in indices:
new_list.append(B[i])
common_index=[x for x,y in enumerate(A) if list(y) in indices]
#[0, 2]
lst=[]
for t in common_index:
lst.append(list(B[t]))
#output
[[9.16435586e-05], [1.781909182e-05]]
Есть ли способ добавить значения B
?
Numpy хорошо обрабатывает массивы чисел в векторной форме. Здесь вам лучше использовать простые списки Python:
A = [[ 0, 4],
[ 0, 5],
[1,6]]
B = [[9.16435586e-05],
[1.84193464e-14],
[1.781909182e-5]]
indices= [[0,4],[1,6]]
print([A[i] for i,v in enumerate(A) if v in indices])
print([B[i] for i,v in enumerate(A) if v in indices])
дает, как и ожидалось:
[[0, 4], [1, 6]]
[[9.16435586e-05], [1.781909182e-05]]
Вы можете использовать метод numpy where для достижения этого:
import numpy as np
A=np.array([[ 0, 4],
[ 0, 5],
[1,6]])
B=np.array([[9.16435586e-05],
[1.84193464e-14],
[1.781909182e-5]])
indices= [[0,4],[1,6]]
for i in range(0,len(indices)):
index = np.where(A == i)
print(index)
print(A[index])
print(B[index])
В вашем коде никогда не используется
B
. Как вы могли ожидать печатать его значения???