重塑一个numpy数组

时间:2012-05-31 12:07:22

标签: python arrays numpy reshape

我想重塑iPython中的以下numpy数组:

array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]]) # Array A

为:

array([[1, 5, 9],[2, 6, 10],[3, 7, 11],[4, 8, 12]]) # Array B

主要任务是计算阵列A的第一个元素的平均值(意味着平均值为1,5,9),然后是第二个元素等等。

我认为最简单的方法是重新整形数组,然后计算它的平均值。

有没有办法在没有通过for循环遍历数组的情况下执行此操作?

2 个答案:

答案 0 :(得分:8)

使用axis上的mean关键字;无需reshape

>>> A = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]])
>>> A.mean(axis=0)
array([ 5.,  6.,  7.,  8.])

如果你确实需要数组B,那么你需要转置数组,而不是重新整形:

>>> A.T
array([[ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11],
       [ 4,  8, 12]])

但是,您需要将axis=1提交给mean

答案 1 :(得分:2)

要进行这种计算,你应该使用numpy。

假设a是你的起始数组:

a.transpose()

会做的伎俩