У меня есть таблица значений сохраняются в список списков, как:Построить массив из другого массива и таблицы значений (Python)
A = [ [a[1],b[1],c[1]],
[a[2],b[2],c[2]],
...
[a[m],b[m],c[m]]]
with
a[i] < b[1]
b[i] < a[i+1]
0 < c[i] < 1
и Numpy массив, такие как:
X = [x[1], x[2], ..., x[n]]
Мне нужно создать массив
Y = [y[1], y[2], ..., y[n]]
, где каждое значение Y будет соответствовать
for i in [1,2, ..., n]:
for k in [1,2, ..., m]:
if a[k] < x[i] < b[k]:
y[i] = c[k]
else:
y[i] = 1
Обращаем внимание, что X и Y имеют одинаковую длину, но А совершенно разные. Y может принимать любое значение в третьем столбце A (c [k] для k = 1,2, ... m), если выполняется [k] < x [i] < b [k] (для k = 1,2, ... m и для i = 1,2, ... n).
В реальных случаях я работаю, п = 6789 и т = 6172.
я мог бы сделать проверку с помощью вложенной «для» цикла, но это очень медленно. Каков самый быстрый способ сделать это? что, если X и Y, где 2D-массивы numpy?
SAMPLE DATA:
a = [10, 20, 30, 40, 50, 60, 70, 80, 90]
b = [11, 21, 31, 41, 51, 61, 71, 81, 91]
c = [ 0.917, 0.572, 0.993 , 0.131, 0.44, 0.252 , 0.005, 0.375, 0.341]
A = A = [[d,e,f] for d,e,f in zip(a,b,c)]
X = [1, 4, 10.2, 20.5, 25, 32, 41.3, 50.5, 73]
ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ:
Y = [1, 1, 0.993, 0.132, 1, 1, 1, 0.375, 1 ]
Почему бы вы сделали 'почтовый ([1,2, ..., п], [1,2, ..., т])'? Кажется вероятным, что это не делает то, что вы думаете. – user2357112
@ user2357112: вы действительно правы, я обновил вопрос. Благодарю. – jorgehumberto
Новая версия по-прежнему выглядит неправильно. Каждое значение 'y [i]' перезаписывается снова и снова. – user2357112