Numpy:将项目附加到类似矩阵的数组

时间:2016-03-23 09:28:20

标签: arrays python-2.7 numpy

我曾经在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]]

1 个答案:

答案 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)))