Как выбрать список словаря с различными возможными комбинациями для нарезки изображений?

strip() удаляет все ведущие и завершающие символы из входной строки, которые соответствуют одному из символов в строке параметров:

>>> "abcdefabcdefabc".strip("cba")
'defabcdef'

Вы хотите использовать регулярное выражение: table_name = re.sub(r"\.csv$", "", name) или os.path s:

>>> table_name, extension = os.path.splitext("movies.csv")
>>> table_name
'movies'
>>> extension
'.csv'
-2
задан can I fix it 15 January 2019 в 16:21
поделиться

2 ответа

Если вы хотите все возможные комбинации, вы можете использовать itertools.product.

Первым шагом является перестановка всех возможных значений 'a', 'b', 'c' and 'd'. Предполагая, что ваш список повторяется каждые 4 шага, вы можете поместить в словарь, для ясности, как:

l1 = {k: [e.get(k) for e in your_list][i::4] for i, k in enumerate(['a', 'b', 'c', 'd'])}
l1
>> 
{'a': [32, 544, 42, 2145],
 'b': [2541, 44, 655, 450],
 'c': [530, 54, 459, 342],
 'd': [55, 454, 665, 186]}

Затем:

from itertools import product
combinations = [c for c in product(*l1.values())]
combinations
>>[(32, 2541, 530, 55),
 (32, 2541, 530, 454),
 (32, 2541, 530, 665),
 (32, 2541, 530, 186)
....
 (2145, 450, 342, 186)]   #256 combinations in this case (4**4)
0
ответ дан Mstaino 15 January 2019 в 16:21
поделиться

Этот код будет принимать данные вашего списка и создавать список, в котором будет храниться ваш img[b:d, a:c]:

where_you_start = 0
where_you_stop = 12
image = [img[0:0, 0:0] for i in range(where_you_start, where_you_stop)]  # Initialize list


for i in range(where_you_start, where_you_stop):
    img_data = {}
    for elem in list[i * 4:i * 4 + 4]:
        for key, value in elem.items():
            img_data[key] = value

    image[i] = img[img_data['b']:img_data['d'], img_data['a']:img_data['c']]


set1 = (image[1], image[2])
set2 = (image[1], image[3])
...
setn = (image[x], image[y])

where_you_start - это то место, с которого вы хотите начать создание img из данных в ваш list.

where_you_stop - это то место, где вы хотите остановиться.

Код перебирает ваш определенный диапазон и принимает четыре значения из списка: list[i * 4:i * 4 + 4] отвечает только за получение четырех значений.

Чтобы получить доступ к различным наборам, выберите разные элементы в списке image

0
ответ дан B Bau 15 January 2019 в 16:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: