由于习惯了 C++/Matlab 使用连续的 2 个[] 获取元素
当需要选择矩阵的一列时,容易写作:
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(a[:][-1]) # [7, 8, 9]
结果不对,因为上面的写法等价于:
b = a[:]
c = b[-1]
a[:][-1] = a[-1] 方括号的运算顺序先计算最近的,再计算远的,因此得不到一列,而只能得到最后一行
numpy
为了获取一列,可以使用 numpy:
import numpy as np
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
a = np.array(a)
print(a[:, -1]) # [3 6 9]
本文探讨了在Python中使用列表切片时遇到的问题,特别是在尝试选取矩阵列时的常见错误。解释了为何`a[:][-1]`返回最后一行而非最后一列,并介绍了NumPy库如何提供更直观的方式来选取矩阵的列。通过引入NumPy数组,展示了如何使用`a[:,-1]`正确获取最后一列。这对于Python初学者和从C++/Matlab过渡的开发者来说是重要的知识点。

6891

被折叠的 条评论
为什么被折叠?



