Python - 在二维数组中将某列设置为特定值的最佳方法
我有一个二维数组,我想把某一列设置成一个特定的值,下面是我的代码。这是用Python实现的最好方法吗?
rows = 5
cols = 10
data = (rows * cols) *[0]
val = 10
set_col = 5
for row in range(rows):
data[row * cols + set_col - 1] = val
如果我想把多列设置成特定的值,我该怎么做呢?
我只想使用Python的标准库。
谢谢!
5 个回答
0
你现在使用的方式没有什么本质上的问题,只是如果你把变量命名为set_col
而不是set_row
,会让人更容易理解,因为你是在设置列。
如果想设置多个列,只需要再加一个循环就可以了:
for set_col in [...columns that have to be set...]
不过有一点需要注意:你的二维数组有点特别,因为它是放在一个一维数组里的(在Python中,二维数组也可以通过列表的列表来实现),所以我建议把这些操作封装成方法或函数。
29
NumPy这个包提供了强大的N维数组对象。如果data
是一个numpy
数组,那么要把set_col
这一列的值设置为val
,可以这样做:
data[:, set_col] = val
完整示例:
>>> import numpy as np
>>> a = np.arange(10)
>>> a.shape = (5,2)
>>> a
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
>>> a[:,1] = -1
>>> a
array([[ 0, -1],
[ 2, -1],
[ 4, -1],
[ 6, -1],
[ 8, -1]])
15
一个更好的解决方案是:
data = [[0] * cols for i in range(rows)]
对于 cols = 2
和 rows = 3
的值,我们会得到:
data = [[0, 0],
[0, 0],
[0, 0]]
然后你可以这样访问它:
v = data[row][col]
这就会得到:
val = 10
set_col = 5
for row in range(rows):
data[row][set_col] = val
或者更符合Python风格的写法(感谢 J.F. Sebastian):
for row in data:
row[set_col] = val