2016-02-10 179 views
3

當使用ellipsis...)來索引1-D ndarray時,我認爲表達式X[0]X[..., 0]在語義上是相同的。然而,他們的字符串表現有所不同:對於1-D`X`,`X [n]`和`X [...,n]`有什麼區別?

In [522]: X = arange(5) 

In [523]: repr(X[0])       
Out[523]: '0' 

In [524]: repr(X[..., 0]) 
Out[524]: 'array(0)' 

我無法找到任何其他方面的差異,而事實上,他們根據array_equal是相等的:

In [526]: array_equal(X[0], X[..., 0]) 
Out[526]: True 

如果他們是根據array_equal平等的,爲什麼他們有不同的字符串表示?

+1

正如@CharlieHaley所說,不同的字符串表示是因爲其中一個給你一個標量,另一個是0維的NumPy數組。不過,我不知道爲什麼'...'會導致0-d數組。 –

回答

4

X[0]返回一個numpy.int64對象。
當你說X[0],你告訴python給你索引爲0的對象在數組X

X[...,0]返回0維numpy數組。
當你說X[...,0],你告訴python給你沿索引0沿X排列的最後一個軸的項目。

+2

嗯。這並不是真正意義上的......。在'X [...,0]'中,你指定你只對'X'的* last *軸索引'0'感興趣,但是對於所有前面的軸,你正在使用全部範圍的指數。如果你在二維數組上試試這個,你會看到'X [...,0]'給你一個1d的結果。 –

+0

是的,我說錯了。你擊中了要害。 –

相關問題