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

AAA*_*AAA 5 python numpy

我在Python中有这个子代码,我无法理解它是什么或它做什么,尤其是这句话:

X[:,:,:,i]
Run Code Online (Sandbox Code Playgroud)

子码是:

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)
Run Code Online (Sandbox Code Playgroud)

Bon*_*io2 4

这称为数组切片。正如 @c\xe1\xb4\x8f\xca\x9f\xe1\xb4\x85s\xe1\xb4\x98\xe1\xb4\x87\xe1\xb4\x87\xe1\xb4\x85 提到的,是一个 4D 数组xX[:,:,:,i]获取其一个特定的 3D 数组切片。

\n\n

也许维度较少的示例会有所帮助。

\n\n
matrix = np.arange(4).reshape((2,2))\n
Run Code Online (Sandbox Code Playgroud)\n\n

在本例中matrix是一个二维数组:

\n\n
array([[0, 1],\n       [2, 3]])\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此matrix[:, 1]将导致 的切片更小matrix

\n\n
array([1, 3])\n
Run Code Online (Sandbox Code Playgroud)\n\n

在原始代码中,matrix[:,:,:, 1]第一个值的:含义类似于“此维度中的所有元素”。

\n\n

在这里查看 numpy 中数组切片的工作原理。

\n