Ответ 1
In [45]: a = np.array([1,2,3,-1,-2,-3])
In [46]: a[a<0]+=1
In [47]: a
Out[47]: array([ 1, 2, 3, 0, -1, -2])
Я пытаюсь получить лучшее сцепление с массивами numpy, поэтому у меня есть примерный вопрос, чтобы спросить о них:
Скажем, у меня есть массив numpy, называемый a. Я хочу выполнить операцию над тем, которая увеличивает все значения внутри нее, которые меньше 0, и оставляет остальных в покое. например, если бы у меня было:
a = np.array([1,2,3,-1,-2,-3])
Я бы хотел вернуться:
([1,2,3,0,-1,-2])
Какой самый компактный синтаксис для этого?
Спасибо!
In [45]: a = np.array([1,2,3,-1,-2,-3])
In [46]: a[a<0]+=1
In [47]: a
Out[47]: array([ 1, 2, 3, 0, -1, -2])
Чтобы мутировать его:
a[a<0] += 1
Чтобы оставить исходный массив отдельно:
a+[a<0]
Просто чтобы добавить выше, в массиве numpy я хотел вычесть значение, основанное на значении ascii, чтобы получить значение от 0 до 35 для ascii 0-9 и AZ, и мне пришлось писать циклы for, но пост выше показал мне, как сделать это коротким. Так что я подумал о том, чтобы опубликовать это здесь, благодаря посту выше.
i = 0
for y in y_train:
if y < 58:
y_train[i] = y_train[i]-48
else :
y_train[i] = y_train[i] - 55
i += 1
i = 0
for y in y_test:
if y < 58:
y_test[i] = y_test[i]-48
else :
y_test[i] = y_test[i] - 55
i += 1
# The shortened code is below
y_train[y_train < 58] -= 48
y_train[y_train > 64] -= 55
y_test[y_test < 58] -= 48
y_test[y_test > 64] -= 55