numpy .where () возвращает пустой массив вместо замены - PullRequest
0 голосов
/ 28 января 2020

У меня есть изображения RGB в виде numpy массивов, и я хочу заменить их определенным значением пикселя:

import numpy as np
import random

def rgb():
    L = [1]*3
    return [random.randrange(0, 256,1)for l in L]

def makeDummyData():
    #creates list of lists with 3 rgb, which contains values to replace (x)
    L = [1]*10000
    L = [rgb() for l in L]
    x = L[0]
    for i in range(500):
        L[i] = x
    return L, x

L, x = makeDummyData()
a = np.array(L).reshape(-1, 3)
a = np.array(a).reshape(100, 100, 3)
b = np.where(a == (np.array(x), [255,255,255], a))
print(b)

Вместо того, чтобы возвращать массив, в котором заменяются целевые значения, вывод будет (массив ( [], dtype = int64),)

1 Ответ

0 голосов
/ 28 января 2020

np.where

  • Кажется, скобка отключена
b = np.where(a == np.array(x), [255,255,255], a) # After == an extra '(' is used
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...