非常简单,但是对此一无所知。 如何在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)
答案 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)
的另一种方式。两者都必须注意尺寸。