Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Numpy:将项附加到类似矩阵的数组_Arrays_Python 2.7_Numpy - Fatal编程技术网

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

Arrays Numpy:将项附加到类似矩阵的数组,arrays,python-2.7,numpy,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))

我以前用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]]

使用获取跨行的平均值,然后将这些值与输入数组一起堆叠为两个“柱状块”,如下所示-

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,:]))

使用获取跨行的平均值,然后将这些值与输入数组一起堆叠为两个“柱状块”,如下所示-

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,:]))

我更新了问题并添加了所需的输出。列\u堆栈看起来很棒,但您也可以在循环中应用它吗?我可能必须为这些数组添加不同的值更新:好的,我计算了一个列表“d”“它包含所有所需的值,而不是列堆栈myArray和d。这是可行的,但我必须为每个要附加的项创建一个新列表。也许有更简单的方法吗?@offeltoffel那么,您是在寻找数组列表还是单个数组作为输出?单个数组输出将是最方便的。“初始化和存储”的想法很好,因为我总是知道最终数组的大小,所以我可以提前创建它,然后用堆叠或附加的值填充它。谢谢@offeltoffel这将取决于实际用例,但对于性能(这就是为什么人们会选择NumPy),我会选择矢量化方法。请注意这一点。我更新了问题并添加了所需的输出。列_堆栈看起来很棒,但您也可以在循环中应用它吗?我可能需要向这些数组添加不同的值来更新:好的,我计算了一个列表“d”,其中包含所有需要的值,而不是列堆栈myArray和d。这是可行的,但我必须为每个要附加的项创建一个新列表。也许有更简单的方法吗?@offeltoffel那么,您是在寻找数组列表还是单个数组作为输出?单个数组输出将是最方便的。“初始化和存储”的想法很好,因为我总是知道最终数组的大小,所以我可以提前创建它,然后用堆叠或附加的值填充它。谢谢@offeltoffel这将取决于实际用例,但对于性能(这就是为什么人们会选择NumPy),我会选择矢量化方法。请注意这一点。