我曾经在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]]
答案 0 :(得分:2)
使用.mean(1)
获取跨行的平均值/平均值,然后将这些值与输入数组一起堆叠为两个带有np.column_stack
的“柱状块”,就像这样 -
git remote set-url origin https://github.com/fredreload/TestProject.git
要在循环中执行此操作,您需要初始化并存储,如下所示 -
np.column_stack((myArray,myArray.mean(1)))