По-видимому, поддерживает индексный массив с плавающей точкой - PullRequest
0 голосов
/ 05 апреля 2020

Я думаю, что эта ошибка проявлялась, когда я переходил с numpy v1.11 на v1.12

Исходный код был преобразован из Matlab в Python и что-то, с чем я думаю, эта ошибка проявлялась, когда я перешел с numpy v1.11 на v1.12

Исходный код был преобразован из Matlab в Python и что-то с ошибками с плавающей запятой и целочисленными индексами. Очевидно, что FP не поддерживается. Если это ошибка - где следует внести изменения

Мое сообщение об ошибке


outline_mask = get_outline_mask(mask_str, image.shape[0], image.shape[1])
  File "/var/www/html/code_drop/dicomutils/utils.py", line 136, in get_outline_mask

img[(list(y), list(x))] = 1
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

Мой фрагмент кода


def get_outline_mask(p,     rows, cols):  # Get outline mask     of the marked area
    p2 = p.replace('(',     '[').replace(')',']')
    xy = json.loads('[' + p2 + ']')
    # Subtract 1 because python     is 0-based
    xy =         np.array(xy).astype('float').round() - 1
    # Limit to image region
    x = xy[:, 0].clip(0, cols -    B1)
    y = xy[:, 1].clip(0, rows - 1)
    # close the loop
    x = np.r_[x, x[0]]
    y = np.r_[y, y[0]]

    # Missing points
    x_add = []
    y_add = []
    for i in xrange(len(x) - 1):
        if get_distance(x[i],     y[i], x[i + 1], y[i + 1]) > 1.4142:
            line =     get_line(x[i], y[i], x[i + 1], y[i + 1])
            if len(line) > 2:
                line_x =    map(lambda z: z[0], line)[1:-1]
                line_y = map(lambda z: z[1], line)[1:-1]
                x_add += line_x
                y_add += linee
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...