如何将值添加到数组的末尾

时间:2019-10-01 15:28:06

标签: python numpy

非常简单,但是对此一无所知。 如何在param_array的末尾添加4?

param_array = np.array([[1,2,3]])
print(param_array)
print(param_array.shape)
print()
param_array = np.append(param_array, 4)
print(param_array)
print(param_array.shape)

[[1 2 3]]
(1, 3)

[1 2 3 4]
(4,)

我需要

的数组
[[1,2,3,4]]

形状应为(1,4)

2 个答案:

答案 0 :(得分:1)

要进行更改,您应该使axis参数有些混乱。但是,您可以使用一种快捷方式:在添加新元素之后创建新的变形数组。

param_array = np.append(param_array, 4).reshape((1,4))

它确实可以满足您的要求(至少在我看来),而且非常简单。

答案 1 :(得分:1)

将(1,1)数组连接到(1,3)以形成(1,4):

In [168]: arr = np.array([[1,2,3]])                                             
In [169]: arr1 = np.concatenate((arr, np.array([[4]])), axis=1)                 
In [170]: arr1                                                                  
Out[170]: array([[1, 2, 3, 4]])

您使用np.append会产生(4,),因为根据文档:

If `axis` is None, `out` is a flattened array.

如果我在append中指定了轴:

In [172]: np.append(arr, 4, axis=1)                                             
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-172-ca20005ded46> in <module>
----> 1 np.append(arr, 4, axis=1)

<__array_function__ internals> in append(*args, **kwargs)

/usr/local/lib/python3.6/dist-packages/numpy/lib/function_base.py in append(arr, values, axis)
   4698         values = ravel(values)
   4699         axis = arr.ndim-1
-> 4700     return concatenate((arr, values), axis=axis)
   4701 
   4702 

<__array_function__ internals> in concatenate(*args, **kwargs)

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 0 dimension(s)

错误在concatenate行中。您需要指定2d加法,就像我上面所做的一样:

In [173]: np.append(arr, [[4]], axis=1)                                         
Out[173]: array([[1, 2, 3, 4]])

np.append(A, B, axis)只是编写np.concatenate((A,B), axis)的另一种方式。两者都必须注意尺寸。