脾气暴躁:将项目追加到矩阵状数组

离线

我曾经用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]]
迪卡卡(Divakar)

使用来获取各行的平均值/平均值.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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章