Może to pomóc w rozbiciu instrukcji na jej części składowe. To stwierdzenie jest równoważne następującej sekwencji instrukcji:
y = y_train.as_matrix()
row_mask = y == 1
X_masked = X_train[row_mask,:]
X_train_to_add = X_masked[indices_to_add, :]
Spójrzmy na konkretny przykład. Załóżmy y
, X_train
i indices_to_add
mają następujące wartości:
>>> import numpy as np
>>> y = np.array([1, 2, -1, 1, 1])
>>> X_train = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]])
>>> indices_to_add = np.array([2, 0])
Najpierw tworzymy tablicę logiczną wskazującą, które elementy y
są równe 1
, co my nazywamy „maskę wiersza”.
>>> row_mask = y == 1
>>> row_mask
array([ True, False, False, True, True], dtype=bool)
Następnie używamy maski rzędu wybrać rzędy X_train
tak, że odpowiednie wartości row_mask
są True
(lub równoważnie, wiersze, tak że odpowiadające im wartości y
są równe 1
).
>>> X_masked = X_train[row_mask,:]
>>> X_masked
array([[ 1, 2, 3],
[10, 11, 12],
[13, 14, 15]])
Wreszcie, używamy tablicy indeksów, aby wybrać określone wiersze z poprzedniego wyniku. Zauważ, że te indeksy odnoszą się do wierszy X_masked
, a nie do oryginalnej matrycy X_train
.
>>> X_train_to_add = X_masked[indices_to_add,:]
>>> X_train_to_add
array([[13, 14, 15],
[ 1, 2, 3]])
można zobaczyć więcej przykładów numpy indeksowania w documentation.
To się nazywa [indeksowanie boolowskie] (http://docs.scipy.org/doc/numpy/user/basics.indexing.html#boolean-or-mask-index-arrays). – ayhan
Z dokumentacji SO: http://stackoverflow.com/documentation/numpy/1296/the-basics/6738/boolean-indexing#t=201607250121018073291 – ayhan
To nie jest * ciąg *. To jest * kod *, a może odwołujesz się do * składni *. Ciąg jest rodzajem danych, takich jak '" tutaj jest jakiś tekst "'. Nie używaj go z innymi znaczeniami, gdy pytasz o programowanie. – Bakuriu