У меня есть 2d-массив, например
5. , 6. , 7. , 8. , 9. ],
[-0.6810069 , -0.61737489, 0.09869664, -0.95659638, 0.54052288,
-0.21486195, -0.55328357, -0.41680664, 0.60628816, -0.92563772],
[ 0.54264171, 0.52459383, -0.83691756, 0.66207278, -0.65591567,
-0.72713526, -0.66719761, -0.99448398, 0.06691338, -0.2620483 ]])
Мне нужно изменить значение, если arr[1] <0 и arr[2] <0, то arr[0] + 10, иначе arr[1] <0 и arr[2] > 0, тогда arr[0] - 10. Я пытаюсь изменить нижний код:
arr[:,np.where(arr[1] < 0 & arr[1] < 0)][0] += 10
но не удалось. Исходный массив не меняется, но код возвращает результат, который мне нужен. Помогите мне, пожалуйста !!!
Вы можете разбить все на 2 этапа (я использую n
для обозначения массива):
# Find the columns satisfying the given conditions
column_indices_1 = np.where(np.logical_and(n[1] < 0, n[2] < 0))
column_indices_2 = np.where(np.logical_and(n[1] < 0, n[2] > 0))
# Change the elements in the columns meeting the conditions
n[0, column_indices_1] += 10
n[0, column_indices_2] -= 10
Спасибо, я пытаюсь сделать индекс с вами anwser: index = np.where((arr[1]<0) & (arr[2]<0)) arr[0,index] += 10
и это работает!
Проблема в двухшаговой индексации.
[0]
должен быть первым или включен вwhere
.