Losowo generuję macierz. Załóżmy dla uproszczenia, że ma on następującą postać np.shape(A) = (2,4)
:
import numpy as np
A:
matrix([[ 1, 2, 3, 4],
[ 3, 4, 10, 8]])
Następnie oceniam następujące wyrażenie:
import numpy as np
K = 3
I = 4
C0 = np.sum(np.maximum(A[-1] - K, 0)) / I
Pytanie brzmi, jak wprowadzić następujące ograniczenie: jeśli dowolna liczba kolumn w macierzy A
jest mniejsza lub równa (<=) K (3), a następnie zmień ostatnią liczbę tej kolumny na zero? Zasadniczo moja macierz powinna się przekształcić w to:
A:
matrix([[ 1, 2, 3, 4],
[ 0, 0, 0, 8]])
Odpowiedzi:
0 dla odpowiedzi № 1To jest jeden sposób.
A[-1][np.any(A <= 3, axis=0)] = 0
# matrix([[1, 2, 3, 4],
# [0, 0, 0, 8]])
A[-1][np.any((A > 2) & (A <= 3), axis=0)] = 0
# matrix([[1, 2, 3, 4],
# [0, 4, 0, 8]])