首页 > 解决方案 > 有没有更简洁的方法可以用 numpy 遍历矩阵的列?

问题描述

我用它来遍历一个 numpy 矩阵的列:

import numpy as np
A = np.random.randn(4,3)
for c in A.T:
    print c.shape  # (4L,) => not a real column
    c = np.array(c, ndmin=2).T
    print c.shape  # (4L, 1L) => OK

有没有更好的方法来迭代列,避免循环内的重新定义和 double transpose

for c in A.T:
    c =  np.array(c, ndmin=2).T

?

注意:我已经阅读了如何迭代矩阵的列?.

标签: pythonarraysnumpymatrix

解决方案


您可以转置,然后在最右边添加一个维度

A.T[..., None]

或者,等效地,在最左边添加一个维度,然后转置

A[None].T

无论哪种情况,您都会得到一个 (3, 4, 1) 形状的数组,然后您可以对其进行迭代。

您可以在 numpy 文档https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html中阅读一般索引和省略号(“...”)文字


推荐阅读