2016-08-22 19 views
8

Aşağıdaki işlevi içeren bir piton programını çalıştırırken, image[x,y] = 0 aşağıdaki hata iletisini verir. Bunun anlamı nedir ve nasıl çözülür? Teşekkürler.VisibleDeprecationWarning: tamsayı yerine tamsayı olmayan bir sayı kullanmak, gelecekte bir hatayla sonuçlanır

Uyarı

VisibleDeprecationWarning: using a non-integer number instead of an integer 
will result in an error in the future 
image[x,y] = 0 
Illegal instruction (core dumped) 

Kod

def create_image_and_label(nx,ny): 
    x = np.floor(np.random.rand(1)[0]*nx) 
    y = np.floor(np.random.rand(1)[0]*ny) 

    image = np.ones((nx,ny)) 
    label = np.ones((nx,ny)) 
    image[x,y] = 0 
    image_distance = ndimage.morphology.distance_transform_edt(image) 

    r = np.random.rand(1)[0]*(r_max-r_min)+r_min 
    plateau = np.random.rand(1)[0]*(plateau_max-plateau_min)+plateau_min 

    label[image_distance <= r] = 0 
    label[image_distance > r] = 1 
    label = (1 - label) 

    image_distance[image_distance <= r] = 0 
    image_distance[image_distance > r] = 1 
    image_distance = (1 - image_distance)*plateau 

    image = image_distance + np.random.randn(nx,ny)/sigma 

    return image, label[92:nx-92,92:nx-92] 
+0

Hangi numpy'/scipy sürümleri? –

+0

Sadece test ettim, numpy sürümü 1.11.0; scipy sürümü 0.17.1 – user288609

+0

'np.floor' size bir float verir ancak endeksleme sadece gelecekte tamsayılarla mümkün olacaktır. Dolayısıyla, 'numpy' sürümünün yükseltilmesinin gelecekte kodunuzu keseceğini belirten bir kullanımdan kaldırma uyarısı alırsınız. Ancak bu uyarı bir hataya neden olmamalıdır. Bu parçayı, yalnızca 'görüntü' dizisinin yaratılması ve bir elemanı sıfıra ayarlamanız anlamına gelen izolasyonda denediniz mi? – jotasi

cevap

13
uyarı indeksi diziniz için yüzen kullanmamayı söylediğini

; np.floor

yerine np.int kullanın