我曾经用R编写代码,现在试图找到进入python的方式。我大部分时间都在使用列表,但是现在我需要使用numpy来完成工作。与R相比,这似乎有点不一样,大多数时候,我遇到了广播不同形状的输入数组的问题。也许如果我能确定以下代码中出了什么问题,我将能够更好地理解numpy试图做什么以及如何处理数组的某些部分。
import numpy as np
a = np.array((1,2,3,4))
b = np.array((2,4,6,8))
c = np.array((3,6,9,12))
myArray = np.asarray((a,b,c))
现在,我想在myArray的每一行上附加其平均值。我尝试了这个:
for i in range(myArray.shape[0]):
myArray[i] = np.append(myArray[i,:], np.mean(myArray[i,:]))
我得到“无法将输入数组从形状(5)广播到形状(4)。我认为,它试图将新项目压缩到尺寸为4的旧数组中,而我想附加它。我该怎么做那?
我想要的输出看起来像:
[In] print myArray
[Out] [[1.0 2.0 3.0 4.0 2.5]
[2.0, 4.0, 6.0, 8.0, 5.0]
[3.0, 6.0, 9.0, 12.0, 7.5]]
使用来获取各行的平均值/平均值.mean(1)
,然后使用来将其与输入数组一起堆叠为两个“列块” np.column_stack
,如下所示-
np.column_stack((myArray,myArray.mean(1)))
要循环执行此操作,您需要进行初始化和存储,如下所示-
m,n = myArray.shape # Get shape of input array
# Define output array with same rows as input, but one more column in it
myArrayOut = np.zeros((m,n+1))
for i in range(myArray.shape[0]):
# Store each row alongwith its mean as the last element
myArrayOut[i] = np.append(myArray[i,:], np.mean(myArray[i,:]))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句