簡體   English   中英

為什么Python **運算符在數組和標量上的行為不同

[英]Why does the Python ** operator behave differently on arrays and scalars

我不了解Python中**運算符的以下行為的合理性。 這將返回一個浮點數:

>>> 10**-1
0.1

這將返回整數:

>>> y=np.array([10,10,10])
>>> y
array([10, 10, 10])
>>> y**-1
array([0, 0, 0])

為什么?!

以下工作,但以上似乎很錯誤。

>>> y**-1.0
array([ 0.1,  0.1,  0.1])

為了提高效率,將numpy數組限制為指定的類型,例如您的類型:

>>> y=np.array([10,10,10])
>>> y.dtype
dtype('int64')

由於int不能表示小數部分,因此將其丟棄。 如果使用這樣的浮點數組,則結果將是您期望的:

>>> y=np.array([10,10,10], dtype='float32')
>>> y.dtype
dtype('float32')
>>> y**-1
array([ 0.1,  0.1,  0.1], dtype=float32)

另外,如果您最初傳入的列表包含float類型,則dtype將默認為float64

>>> y=np.array([10.0 ,10.0 ,10.0])
>>> y.dtype
dtype('float64')
>>> y**-1
array([ 0.1,  0.1,  0.1])

numpy實現它的任何包含兩個int結果的數學運算..至少那在很大程度上是我的經驗

暫無
暫無

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

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