有没有一种更干净的方法来用numpy遍历矩阵的列?

时间:2018-11-15 14:25:08

标签: python arrays numpy matrix

我使用它来遍历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

是否有更好的方法来遍历列,避免在循环内部重新定义,并且避免使用双transpose

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

注意:我已经读过How to iterate over columns of a matrix?

1 个答案:

答案 0 :(得分:1)

您可以转置然后在最右边添加尺寸

A.T[..., None]

或等效地,在最左侧添加一个尺寸,然后转置

A[None].T

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

您可以在numpy文档https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

中阅读一般的索引,特别是省略号(“ ...”)。