2016-06-21 64 views
0

已閱讀What is the L in numpy.shape and 32 in numpy.type of an array?我知道爲什麼「L」後綴在那裏。但是我想要做一些涉及知道我的數據集大小的操作。Numpy.shape有一個後綴:擺脫它的最佳方式

顯然,我可以做一些簡單的字符串處理擺脫後綴的,但我不想假設它總是在那裏(這是不是我最後一次跑在不同的機器上的代碼)。

那麼處理這個問題的pythonic方法是什麼?有什麼我應該使用,而不是shape()?是否有一個簡單的「將數字部分轉換爲整數並丟棄其餘部分」函數我應該在輸出中使用?有什麼方法可以告訴shape()我不想要後綴?

獎金的問題:如果是這樣介紹/爲什麼會出現在一個系統上,而不是其他(包括Python 2.7版,舊體制的numpy的版本未知)?在docs中沒有提到它,所以沒有歷史記錄可以幫助我知道我是否可以假設新系統會擁有它。

回答

0

L是顯示所述值,表示該值被存儲爲long,而不是作爲一個int的人工產物:它實際上不是值的部分。因此,你可以忽略它。

>>> num = 123L # create a long for testing 
>>> num 
123L 
>>> num + 1 # simple operations 
124L 
>>> len(range(num)) # function calls 
123 
>>> math.sqrt(num) # math module calls also work, most of the time. 
11.090536506409418 

如果必須擺脫它,你可以使用int()

>>> int(num) # convert to int 
123 

它可以是一個問題的唯一情況是,如果你有一個非常大的值:

>>> num = 2147483648 
>>> num 
2147483648L 
>>> range(num) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
OverflowError: range() result has too many items 

但如果你正在使用range有觀點認爲大的,你可能是unpythonic沿線某處。

+0

好東西* *是給我上,我試圖從中減去行一個TypeError - 但是當我恢復減法事實並非如此。我不知道'int'可以做到這一點,所以謝謝你兩次。 –

相關問題