2012-05-31 135 views
0

我想重塑以下numpy的阵列中的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循环循环数组?

+0

这些NumPy数组? –

+0

是的,这些都是numpy数组 –

回答

1

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

假设一个是你的起始数组:

a.transpose() 

会做的伎俩

+0

你知道的'a.T'和'a.transpose()是否有区别? – mgilson

+0

'aT'简称 – wim

+0

我以为他们会,但我想我会要求确保一个没有返回副本,而另一个返回一个'视图'或什么... – mgilson

8

使用上meanaxis关键词;无需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=1mean

+0

非常感谢您的回答!适合我的问题! –