In numpy, was hat die Auswahl von [:,None] tun?
Nehme ich den Udacity-Kurs auf deep-learning-und ich kam in den folgenden code:
def reformat(dataset, labels):
dataset = dataset.reshape((-1, image_size * image_size)).astype(np.float32)
# Map 0 to [1.0, 0.0, 0.0 ...], 1 to [0.0, 1.0, 0.0 ...]
labels = (np.arange(num_labels) == labels[:,None]).astype(np.float32)
return dataset, labels
Was bedeutet labels[:,None]
eigentlich hier tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html
http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.expand_dims.html
Was mit Ihrem code
None
ist ein alias für NP.newaxis. Es erzeugt eine Achse mit der Länge 1. Dies kann nützlich sein, für matrix multiplcation etc.Ich kam hierher, nachdem er das exakt gleiche problem, das gleiche zu tun Udacity-Kurs. Was ich tun wollte, ist die Umsetzung der ein dimensionales numpy-Serie/array, welches nicht funktioniert, mit numpy.transponieren([1, 2, 3]).
Also ich wollte noch hinzufügen, können Sie transponieren, wie dies (Quelle):
Das Ergebnis:
ist so ziemlich identisch (Typ andere) zu:
Aber ich denke, es ist einfacher zu merken...
zu erklären, es im Klartext, es ermöglicht Vorgänge zwischen zwei arrays unterschiedlicher Anzahl von Dimensionen.
Er tut dies, indem Sie eine neue, leere dimension, die wird automatisch an die Größe der anderen Arrays.
Also im Grunde, wenn:
Array1 = Form[100]
und
Array2 = Form[10,100]
Array1 * Array2
wird normalerweise eine Fehlermeldung zu geben.Array1[:,None] * Array2
arbeiten.