Мне интересно, есть ли хороший способ использовать инструкцию if-else внутри фигурных скобок массива в Python для назначения значений. Я хотел бы что-то вроде:Можете ли вы использовать инструкцию if-else внутри фигурных скобок для массива в Python?
A = #some 2D array of length m by n, already initialized
A = np.float64(A)
val = someValue #any number, pick a number
A = [[val for j in range(n) if A[i][j] < val, else A[i][j]=A[i][j]] for i in range(m)]
Есть ли хороший способ сделать это? Альтернативно, если numpy имеет более быстрый способ вычислить это, это будет одинаково хорошо, если не лучше.
Чем дольше способ сделать то, что я пытаюсь добиться будет что-то вроде
for i in range(m):
for j in range(n):
if A[i][j] < val:
A[i][j] = val
Нужный выход устанавливать какие-либо значения ниже порога до этого порога. Я могу сделать более простые if-утверждения с 1D-массивом, такие как
myArray = [otherArray[i] for i in range(theRange) if otherArray[i]>=value and otherArray[i]<=anotherValue]
Этот пример 1D не то, что я хочу. Это всего лишь пример типа кодирующего блока, который я ищу. Кажется, что он быстрее обрабатывает традиционные инструкции if-else. одна линия синтаксис троичный оператор
Что вы ожидаемый результат? Вы можете использовать условное выражение *, но не так, как вы это делаете (например, вы не можете выполнять назначения внутри выражений). Мне совершенно непонятно, чего вы пытаетесь достичь здесь. –
@MartijnPieters Я только что пересмотрел свой вопрос. – Lou
'A [A