np.ones((5,5)) + np.ones(5)
np.ones((5,5)) + np.ones(4) <- This would give a error.
seit np.ones (5), um die Größe jeder Zeile passen sie eine elementweise Ergänzung zu jeder Zeile.
So einfach funktioniert numpy. Ich bin kein lineares Algebra-Modul.
Hier ist ein kurzes Beispiel, wie Sie es tun könnten, dies muss erweitert werden, mit mehr Logik und Cleverness. Nur ein Beweis für das Konzept.
import numpy as np
class myMatrixClass(np.ndarray):
def __add__(self,val):
if (hasattr(val, '__iter__') and self.shape != val.shape):
print "not valid addition!"
else:
return super(myMatrixClass, self).__add__(val)
In [33]: A = myMatrixClass(shape=(5,5))
In [34]: A[:] = 1
In [35]: B = A + 1
In [36]: B
Out[36]:
myMatrixClass([[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.],
[ 2., 2., 2., 2., 2.]])
In [37]: C = A + np.ones(5)
not valid addition!
(http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html) –
Eine solche Funktion (Smart Array hinaus) ist sehr nützlich bei der Programmierung [NumPy Rundfunk Regeln sehen] .. und es wurde in numpy implementiert. Seien Sie nicht überrascht, aber 'a' + 'b' = 'ab' und 'a' * 3 = 'aaa' - diese Funktion ist auch praktisch ... – bubble
eine Ausnahme zu werfen ist auch nicht in der linearen Algebra definiert –