2017-07-18 1141 views
4

我有這個子代碼Python和我不明白它是什麼或做什麼的,尤其是這樣一句話:在numpy中X [:,:,:,i]是什麼意思?

X[:,:,:,i] 

子碼是:

train_dict = sio.loadmat(train_location) 
X = np.asarray(train_dict['X']) 

X_train = [] 
for i in range(X.shape[3]): 
    X_train.append(X[:,:,:,i]) 
X_train = np.asarray(X_train) 

Y_train = train_dict['y'] 
for i in range(len(Y_train)): 
    if Y_train[i]%10 == 0: 
     Y_train[i] = 0 
Y_train = to_categorical(Y_train,10) 
return (X_train,Y_train) 
+5

它看起來像X是一個4D陣列,所以你切出一個3D切片並將其附加到X_train。 –

+0

正如僅供參考,我不認爲「子代碼」是一個真正的詞。我很欣賞你嘗試投入它。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅthanks你u – AAA

回答

3

這就是所謂的數組切片。正如@cᴏʟᴅsᴘᴇᴇᴅ所提到的,x是一個4D陣列,並且X[:,:,:,i]得到一個特定的3D陣列片。

也許尺寸較小的示例可以提供幫助。

matrix = np.arange(4).reshape((2,2)) 

在這種情況下matrix是一個二維數組:

array([[0, 1], 
     [2, 3]]) 

因此matrix[:, 1]將導致matrix較小切片:

array([1, 3]) 

在每個第一:的原代碼matrix[:,:,:, 1]意思就像「這個層面的所有元素」。

看看陣列切片如何在numpy here中工作。

+1

好的和有幫助的。 +1 –

+1

@ Bonifacio2謝謝 – AAA

+0

謝謝@cᴏʟᴅsᴘᴇᴇᴅ。 :) – Bonifacio2