2017-07-18 1133 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