Скажем, у меня есть два больших массива Numpy A1 и A2 (каждый с 10000 номерами). Я хочу найти индексы в каждом массиве, которые соответствуют условию f (x1, x2)> 0 . Чтобы быть ясным, для каждого номера в A1 (или A2 ), если есть любое число в A2 (или A1 ), который соответствует условию, то это допустимое число. На данный момент я использую один цикл по сравнению с A1 и использую только векторизацию Numpy для расчетов на A2 :
import numpy as np
a1 = np.random.rand(10000)
a2 = np.random.rand(10000)
def f(x1, x2):
return np.exp(x2 - x1) / 1.2 - 1
valid_i1_set = set()
valid_i2_set = set()
for i1 in range(len(a1)):
valid_i2 = np.nonzero(f(a1[i1], a2) > 0)[0].tolist()
valid_i2_set.update(valid_i2)
if len(valid_i2) > 0:
valid_i1_set.add(i1)
print(sorted(valid_i1_set))
print(sorted(valid_i2_set))
< /code>
Я думаю, что должен быть более быстрый способ сделать это без цикла. Создание массива продуктов из 10000x10000 также не кажется правильным. Есть предложения?
Подробнее здесь: https://stackoverflow.com/questions/796 ... -condition
Самый быстрый способ найти показатели двух массивов Numpy, которые соответствуют условию ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Самый быстрый способ найти показатели двух массивов Numpy, которые соответствуют условию
Anonymous » » в форуме Python - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-