2017-05-22 72 views
2

的例外,這樣,比如我有:轉換浮到int和的情況下,提高四捨五入

a = np.array(...) 
a[idx/3] = 5 

idx/3將是一個float,即使它會永遠在該程序的整數值。這將引發VisibleDeprecationWarning,或者已經不再被更新的Python版本支持。

是否有一個內置函數將float轉換爲int,並且如果輸入值不是整數,可以引發異常?或者什麼是正確的方法呢?

我知道這也可能導致一些關於'如何接近'的問題,這就是爲什麼我要求並且不信任floor/ceil

+1

爲什麼'idx'一個浮動?首先看起來有點像設計問題? –

+0

@WillemVanOnsem:由於整數除以另一個整數似乎會導致浮點數,即使數字實際上具有整數值。 – Michael

+1

是的,如果你在Python-3中用'/'做這個。但是如果你使用'//',它是整數除法。 –

回答

4

要明確:

assert (idx % 3) == 0, "idx must be divisible by 3" 
a[idx // 3] = 5 
+0

這給出NumPy 1.12中的IndexError:只有整數,切片(':'),省略號('...'),numpy.newaxis('無'),整數或布爾數組是有效索引。你需要實際將'idx // 3'的結果轉換爲int – Eric

+0

啊,只要'idx'是一個float – Eric