2016-08-22 18 views
8

image[x,y] = 0は、次の関数を含むPythonプログラムを実行すると、次のエラーメッセージを表示します。それはどういう意味ですか、それをどう解決するのですか?ありがとう。VisibleDeprecationWarning:整数の代わりに非整数を使用すると、将来エラーが発生します

警告

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) 

コード

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

どのバージョンの 'numpy' /' scipy'を使用しますか? –

+0

私はそれをテストしましたが、numpyのバージョンは1.11.0です。 scipyのバージョンは0.17.1です。 – user288609

+0

'np.floor'は浮動小数点を与えますが、インデックスは将来の整数でのみ可能です。したがって、 'numpy'のバージョンアップが将来あなたのコードを壊すことを警告します。しかし、この警告がエラーになるべきではありません。あなたは孤立してこの部分を試しましたか?つまり、 'image'配列の作成と1つの要素のゼロへの設定だけですか? – jotasi

答えて

13
警告はインデックスあなたの配列に山車を使用しないことを言っている

np.floorの代わりにnp.intを使用してください

関連する問題