Я пытаюсь переклассифицировать массив, который имеет значения от 0 до 15, с новыми значениями от 0 до 5.
У меня следующие условия:
con1 = np.in1d(arr, [0, 11, 13, 15]).reshape((y, x)) # new val 0
con2 = np.in1d(arr, [1, 2, 3, 4, 5]).reshape((y, x)) # new val 1
con3 = (arr == 6) | (arr == 7) # new val 2
con4 = (arr == 8) | (arr == 9) # new val 3
con5 = (arr == 10) # new val 4
con6 = (arr == 12) | (arr == 14) # new val 5
У меня есть следующеестрока в python
return np.where(con1, 0, np.where(con2, 1, np.where(con3, 2, np.where(con4, 3, np.where(con5, 4, np.where(con6, 5, arr))))))
длиной 128 символов (включая отступ внутри функции).PEP8 предполагает, что строки не должны превышать 79 символов.Однако я не уверен, что является лучшим способом разбить эту строку на несколько строк, сохраняя читабельность.
Я пробовал два варианта, но они кажутся трудными для чтения.
Вариант 1:
return np.where(con1, 0, np.where(
con2, 1, np.where(
con3, 2, np.where(
con4, 3, np.where(
con5, 4, np.where(
con6, 5, arr))))))
Вариант 2:
return np.where(con1, 0,
np.where(con2, 1,
np.where(con3, 2,
np.where(con4, 3,
np.where(con5, 4,
np.where(con6, 5, arr)
)))))