Hier ist ein Ansatz
In [2]: a[:, -1] = a[:, -1] > 0
In [3]: a
Out[3]:
array([[ 0.15293227, -1.50167614, 0. ],
[ 1.25396778, 0.21520081, 1. ],
[-1.1272423 , 1.18971277, 1. ]])
und wenn Sie für die negativen Einträge wollen nicht auf Null gesetzt werden, hier ist eine facetious Alternative:
In [4]: a[:, -1] = a[:, -1] ** (a[:, -1] < 0)
In [5]: a
Out[5]:
array([[ 0.15293227, -1.50167614, -1.04974543],
[ 1.25396778, 0.21520081, 1. ],
[-1.1272423 , 1.18971277, 1. ]])
Als Antwort auf Ihren Kommentar Nehmen wir an, Sie möchten einen benutzerdefinierten Gleitkommawert festlegen, der nur bei den positiven Einträgen eingefügt wird (während die negativen Einträge allein gelassen werden).
In [6]: float_to_insert_at_positives = 3.14159
In [7]: (float_to_insert_at_positives - a[:, -1]) * (a[:, -1] > 0) + a[:, -1]
Out[7]: array([-1.04974543, 3.14159 , 3.14159 ])
In [8]: a[:, -1] = (float_to_insert_at_positives - a[:, -1]) * (a[:, -1] > 0) +
... a[:, -1]
In [9]: a
Out[9]:
array([[ 0.15293227, -1.50167614, -1.04974543],
[ 1.25396778, 0.21520081, 3.14159 ],
[-1.1272423 , 1.18971277, 3.14159 ]])
Cool danke! Was macht der Operator '**'? – user14492
Wenn das linke Argument des Operators '**' ein NumPy 'ndarray' ist, dann bedeutet' ** ', jedes Element des Arrays auf der linken Seite auf die vom entsprechenden Element des Arrays auf der rechten Seite angegebene Potenz anzuheben (oder, erhöhe alles auf die gleiche Potenz, wenn nur ein skalarer Exponentenwert angegeben wird). In regulären Python bedeutet '**' Potenzierung für numerische Typen. '2 ** 3' ist zwei gewürfelt. – ely
Ahh ich sehe. Ihre zweite Methode würde also nur funktionieren, wenn sie auf 1 gesetzt werden sollen, weil 'x ** 0 == 1 '. Gibt es eine Möglichkeit, sie auf einen anderen Float zu setzen? – user14492