簡體   English   中英

NumPy中的數組索引沒有意義

[英]Array indexing in NumPy not making sense

我有一個大小為28x28x60000的numpy數組。 請注意以下事項:

>>> X.shape
(28, 28, 60000)
>>> X[:][:][0].shape
(28, 60000)

不應該X[:][:][0]是一個大小為28x28的數組? 我們包括前兩個維度(每個28個)的每個組件,但只包括第三個維度的第0個條目。

這里發生了什么?

你切錯了。 Slice X[:]返回原始數組的副本。 因此,您的切片可以被解釋為X的第一個副本,然后是X的另一個副本,然后獲得具有28x60000形狀的第一個元素。 所以你需要調用X[:,:,0] 例:

import numpy as np
X = np.random.randn(28,28,60000)

In [257]: X[:,:,0].shape
Out[257]: (28, 28)

您可以將X[:]X[:][:]語句與all語句進行比較

In [261]: (X[:] == X[:][:]).all()
Out[261]: True

X[:]索引所有維度的所有值,而不僅僅是第一個維度。 所以X[:][:]X相同

要獲得結果,只需編寫X[:,:,0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM