2014-12-25 15 views
9

, şamandıra otomatikNeden float64 bir liste ile çarpılırken int olarak yayınlanır? listesi olan bir numpy şamandıra çarpmadan

>>> import numpy as np 
>>> a = [1, 2, 3] 
>>> np.float64(2.0) * a ### This behaves as 2 * a 
[1, 2, 3, 1, 2, 3] 

Normal bir şamandıra bir TypeError Ancak

>>> 2.0 * a ### This does not 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't multiply sequence by non-int of type 'float' 

verir int dökülür, numpy şamandıra indeksleme

için kullanılamaz
>>> a[np.float64(2.0)] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: list indices must be integers, not numpy.float64 

Bu davranışın arkasındaki mantık nedir?

+0

Şamandıranın neden bir int olduğunu veya tüm bunların arkasındaki mantığı bilmek istediğinizi bilmek ister misiniz? –

+0

@PythonMaster Float64'ın neden floattan ayrıldığını ve niçin ilk örnekte int olarak yapıldığını bilmek istiyorum. – wernere

+0

Hiç sorduğun soruları anlayamıyorum. –

cevap

2

NumPy'de known bug numarasına karşı çarptısınız. GitHub sorunu geçen yıl kapalıydı, ancak davranış NumPy sürüm 1.9.1'de kalır.

İlgili konular