我在Python中有这个子代码,我无法理解它是什么或它做什么,尤其是这句话:
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)
答案 0 :(得分:4)
这称为阵列切片。正如@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中工作。