我想设置 numpy 数组的值如下。但我不想使用 for-loop。 有什么好的方法吗?
a = range(4)
a[0] = [11,12,13,14,15,16]
a[1] = [21,22,23,24,25,26]
a[2] = [31,32,33,34,35,36]
a[3] = [41,42,43,44,45,46]
a = np.array(a)
changeIndex = [0,2,4]
for i in range(4):
a[i][changeIndex] = 0
print a
#array([[ 0, 12, 0, 14, 0, 16],
# [ 0, 22, 0, 24, 0, 26],
# [ 0, 32, 0, 34, 0, 36],
# [ 0, 42, 0, 44, 0, 46]])
请您参考如下方法:
您本质上想要访问多个列,您可以通过以下方式实现:
a[:, changeIndex] = 0
记住:
- 第一个索引选择行,第二个索引选择列。
- 您可以使用列表或元组选择多个索引。
更好的风格:
定义多维 numpy 数组或矩阵的更好方法是:
a = np.array([range(11,17), range(21,27), range(31, 37), range(41,47)])
感谢其中一条评论,您实际上可以使用 np.arange() 代替 range() 以加快计算速度
矩阵:
处理二维数组时,请考虑改用矩阵。当您对它们执行操作时,矩阵会保留其多维性质,您还可以对它们使用特殊的矩阵操作。阅读here .它们的工作方式也类似于数组:
a = np.matrix([range(11,17), range(21,27), range(31, 37), range(41,47)])
供您引用的有点相关的主题是 here .
