Python - Простой и быстрый способ разделения значений в 2D-списке на одно значение - PullRequest
2 голосов
/ 29 марта 2020

Например, у меня есть 2D список измерений 2x2, хранящийся в переменной r.

 12    24
 36    48

Я хочу разделить каждое значение в списке на 2. Простой медленный способ сделать это состоит в том, чтобы перебрать каждую строку и столбец и разделить их на 2.

rows = 2
columns = 2
for x in range(rows):
    for y in range(columns):
        r[x][y] = r[x][y]/2

. Существует ли простой и быстрый способ разделения каждого значения в списке 2D на конкретное значение c, отличное от ручного подхода? Я попробовал код ниже, но он выдает ошибку:

 s = r /2

Ошибка:

TypeError: unsupported operand type(s) for /: 'list' and 'int'

Ответы [ 3 ]

4 голосов
/ 29 марта 2020

Вы можете использовать библиотеку numpy для достижения желаемого результата. он использует векторизацию, поэтому это самый быстрый способ выполнить операцию.

Попробуйте это:

import numpy as np

arr = np.array(r) # --> initialize with 2d array
arr = arr / 2 # --> Now each element in the 2d array gets divided by 2

Например:

arr = np.array([[1, 2], [2, 3]]) # --> initialize with 2d array
arr = arr / 2 # --> divide by the scalar

print(arr)

Выход:

[[0.5 1. ]
 [1.  1.5]]
1 голос
/ 29 марта 2020
import numpy as np
x=np.array(2D_list)
x=x/2
1 голос
/ 29 марта 2020

Похоже, что в официальной документации есть даже раздел о вложенных списках:

https://docs.python.org/3/tutorial/datastructures.html#nested -list-comphetsions

т.е.

>>> r = [[12,24],[36,48]]
>>> [[i/2 for i in a] for a in r]
[[6.0, 12.0], [18.0, 24.0]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...