1. ホーム
  2. python

[解決済み] VisibleDeprecationWarning: 整数の代わりに非整数を使用すると、将来的にエラーになります。

2022-02-28 14:41:18

質問

以下のような関数を含むpythonプログラムを実行する場合。 image[x,y] = 0 は、次のようなエラーメッセージを表示します。これは何を意味し、どうすれば解決するのでしょうか?ありがとうございます。

警告

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]

解決方法は?

警告は、配列のインデックスに浮動小数点数を使用しないように言っています。 np.int の代わりに np.floor