如何用纯Python实现NumPy中A[R][:,R]的等价操作?
纯Python实现NumPy的A[R][:,R]等价操作
当然有啦!用Python的列表推导式就能写出非常优雅且简洁的实现,完全不需要依赖NumPy。咱们直接看针对你给出示例的解决方案:
A = [[0, 1, 2], [1, 2, 3], [2, 3, 4]] R = [1, 2, 2] # 核心实现代码 result = [[row[i] for i in R] for row in (A[r] for r in R)] print(result) # 输出: [[2, 3, 3], [3, 4, 4], [3, 4, 4]]
代码解释
这个实现分两步完成,和NumPy的A[R][:,R]逻辑完全对应:
- 第一步取行:
(A[r] for r in R)是一个生成器表达式,它会按R中的索引依次取出A对应的行,对应NumPy里的A[R]。 - 第二步取列:外层的列表推导式遍历第一步得到的每一行,再用内层列表推导式
[row[i] for i in R]按R的索引取出每行对应的元素,对应NumPy里的[:,R]。
这种写法既简洁又符合Python的惯用风格,可读性拉满,而且对于中小型规模的数据来说效率也完全够用。
内容的提问来源于stack exchange,提问作者Simd
相关产品推荐
相关产品推荐

