在numpy中X [:,:,:,i]的含义是什么?

时间:2017-07-18 13:08:54

标签: python numpy

我在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)

1 个答案:

答案 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中工作。