Python - 将 2D 列表中的值除以单个值的简单快捷的方法

Aly*_*ono 2 python list python-3.x

例如,我有一个存储在变量2D中的2x2维度列表r

 12    24
 36    48
Run Code Online (Sandbox Code Playgroud)

我想将列表中的每个值除以2. 一个简单而缓慢的方法是遍历每一行和每一列并将其除以2

rows = 2
columns = 2
for x in range(rows):
    for y in range(columns):
        r[x][y] = r[x][y]/2
Run Code Online (Sandbox Code Playgroud)

2D除了手动方法之外,是否有一种简单快捷的方法可以将列表中的每个值划分为特定值?我尝试了下面的代码,但它抛出了一个错误:

 s = r /2
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: unsupported operand type(s) for /: 'list' and 'int'
Run Code Online (Sandbox Code Playgroud)

Shu*_*rma 5

您可以使用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
Run Code Online (Sandbox Code Playgroud)

例如:

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

print(arr)
Run Code Online (Sandbox Code Playgroud)

输出:

[[0.5 1. ]
 [1.  1.5]]
Run Code Online (Sandbox Code Playgroud)