Запросить массив, где выровняются два других массиваPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Запросить массив, где выровняются два других массива

Сообщение Anonymous »

У меня есть 3 массива, x , y и q . Arrays x и y Имеет одинаковую длину, Q - массив запросов. Предположим, что все значения в x и Q уникальны. Для каждого значения Q я хотел бы найти индекс соответствующего значения в x . Затем я хотел бы запросить этот индекс в y . Если значение из q не отображается в x , я хотел бы вернуть np.nan .
в качестве конкретного примера рассмотрите следующие массивы:

Код: Выделить всё

x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
q = np.array([2, 0])
Поскольку только значение 2 происходит в x , правильное возвратное значение будет:

Код: Выделить всё

out = np.array([5, np.nan])
< /code>
с циклами это можно сделать так: < /p>
out = []
for i in range(len(q)):
for j in range(len(x)):
if np.allclose(q[i], x[j]):
out.append(y[j])
break
else:
out.append(np.nan)
output = np.array(out)
< /code>
Очевидно, что это довольно медленно. Есть ли более простой способ сделать это с помощью Numpy встроенными, такими как np.argwhere 
? Или было бы проще использовать панды?


Подробнее здесь: https://stackoverflow.com/questions/726 ... rays-align
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»