0

我想在 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

4

2 回答 2

8

使用axis关键字 on 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=1to mean

于 2012-05-31T12:11:12.587 回答
2

要进行这种计算,您应该使用 numpy.

假设 a 是您的起始数组:

a.transpose()

会成功的

于 2012-05-31T12:10:52.690 回答