Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Python 将新向量添加到numpy数组_Python_Arrays_Numpy - Fatal编程技术网

Python 将新向量添加到numpy数组

Python 将新向量添加到numpy数组,python,arrays,numpy,Python,Arrays,Numpy,我正在做一个项目,我想把一组向量保存到一个numpy数组中 我想要一个nd数组,如下所示: [[[ 2.52416655e+05 -3.39300988e+05 -1.47104728e+05] [ 7.62810170e-02 4.71563079e-02 2.04445954e-02]] [[ -8.30154058e+10 1.11596039e+11 4.83823596e+10] [ -2.50869296e+04 -1.54980220e+04

我正在做一个项目,我想把一组向量保存到一个numpy数组中

我想要一个nd数组,如下所示:

[[[  2.52416655e+05  -3.39300988e+05  -1.47104728e+05]
  [  7.62810170e-02   4.71563079e-02   2.04445954e-02]]

 [[ -8.30154058e+10   1.11596039e+11   4.83823596e+10]
  [ -2.50869296e+04  -1.54980220e+04  -6.72001994e+03]]

 [[ -8.33917881e+10   1.11616209e+11   4.84208579e+10]
  [ -2.52465548e+04  -1.64620901e+04  -7.06724029e+03]]]
通过在开始时使用这样的单个阵列:

[[  2.52416655e+05  -3.39300988e+05  -1.47104728e+05]
 [ -8.30154058e+10   1.11596039e+11   4.83823596e+10]
 [ -8.33917881e+10   1.11616209e+11   4.84208579e+10]]
通过我的算法的每次迭代,我将向这个数组添加一组新的向量。在第一次迭代之后,该数组将类似于我在第一部分中显示的nd数组


有任何numpy方法可以让我做到这一点吗?如果有更好的方法,请告诉我。非常感谢

如果
X
是您的数组,则可以执行以下操作

np.vstack([x[0] for x in X]) # loop and get first element


假设从数组a开始:

a
Out[891]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
您要附加数组b:

b
Out[892]: 
array([[ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17]])
您可以使用np.r_将它们合并到最终数组“final”中,然后重新整形

final = np.r_[a,b]

final.reshape((3,-1,3),order='F')
Out[898]: 
array([[[ 0,  1,  2],
        [ 9, 10, 11]],

       [[ 3,  4,  5],
        [12, 13, 14]],

       [[ 6,  7,  8],
        [15, 16, 17]]])
附加另一个数组c时,可以执行相同的操作:

c
Out[899]: 
array([[18, 19, 20],
       [21, 22, 23],
       [24, 25, 26]])

final = np.r_[final,c]

final.reshape((3,-1,3),order='F')
Out[901]: 
array([[[ 0,  1,  2],
        [ 9, 10, 11],
        [18, 19, 20]],

       [[ 3,  4,  5],
        [12, 13, 14],
        [21, 22, 23]],

       [[ 6,  7,  8],
        [15, 16, 17],
        [24, 25, 26]]])
使用2个(或更多)形状相同的阵列,可以在多个轴上连接它们,包括现有的水平或垂直方向。但是
np.array
在“开始”时将它们连接到一个新的轴上:

In [429]: A = np.arange(9).reshape(3,3)
In [430]: B = np.arange(9,18).reshape(3,3)
In [431]: np.array([A,B])   # (2,3,3) array
Out[431]: 
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]]])
结果与我输入的三重嵌套列表相同
np.stack
np.concatenate
的一个新版本,它可以执行相同的操作,也可以连接到另一个新轴上。我认为axis=1符合您的要求:

In [432]: np.stack([A,B], axis=1)   # a (3,2,3) array
Out[432]: 
array([[[ 0,  1,  2],
        [ 9, 10, 11]],

       [[ 3,  4,  5],
        [12, 13, 14]],

       [[ 6,  7,  8],
        [15, 16, 17]]])
In [433]: _[:,0,:]      # selecting from the 2nd axis to get A
Out[433]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
使用
np。连接
及其派生词

哦,如果您需要像这样加入大量数组,最好将它们收集到一个列表中,例如,
[a,B,C,D,…][code>,然后只应用一次
堆栈。列表附加更适合于迭代使用


有些安排需要进一步操作转置或轴交换。但是我认为这里不需要这样做。

所以,为了理解你的问题,你的意思是你想要一种方法,将问题第二部分中的数组存储到第一部分中的数组?如果第一部分是带形状(3,2,3)的
x
。第二个是带有形状(3,3)的
x[:,0,:]
。@Jeremy,很抱歉把这个问题弄糊涂了。基本上,第二部分是我在开始时所做的,我想向它添加一组新的数组,并使其与第一部分类似。是否添加相同大小的数组?你看过
np.stack
了吗?有了np.stack,你不需要订购FThanks,我试试看
In [432]: np.stack([A,B], axis=1)   # a (3,2,3) array
Out[432]: 
array([[[ 0,  1,  2],
        [ 9, 10, 11]],

       [[ 3,  4,  5],
        [12, 13, 14]],

       [[ 6,  7,  8],
        [15, 16, 17]]])
In [433]: _[:,0,:]      # selecting from the 2nd axis to get A
Out[433]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])