Numpy 数组:连接数组和整数

For*_*zaa 3 python arrays integer numpy concatenation

在我的 Python 程序中,我连接了几个整数和一个数组。如果这行得通,那将是直观的:

x,y,z = 1,2,np.array([3,3,3])
np.concatenate((x,y,z))
Run Code Online (Sandbox Code Playgroud)

但是,所有整数都必须转换为 np.arrays:

x,y,z = 1,2,np.array([3,3,3])
np.concatenate((np.array([x]),np.array([y]),z))
Run Code Online (Sandbox Code Playgroud)

特别是如果您有很多变量,那么手动转换会很乏味。问题是 x 和 y 是 0 维数组,而 z 是 1 维数组。有没有办法在没有转换的情况下进行连接?

Bri*_*ius 5

它们只需要是序列对象,不一定是 numpy 数组:

x,y,z = 1,2,np.array([3,3,3])
np.concatenate(([x],[y],z))
# array([1, 2, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)

Numpy 也有一个insert函数可以做到这一点:

x,y,z = 1,2,np.array([3,3,3])
np.insert(z, [0,0], [x, y])
Run Code Online (Sandbox Code Playgroud)

我要补充的是,如果您只是想将整数添加到列表中,则不需要 numpy 来执行此操作:

x,y,z = 1,2,[3,3,3]
z = [x] + [y] + z
Run Code Online (Sandbox Code Playgroud)

或者

x,y,z = 1,2,[3,3,3]
[x, y] + z
Run Code Online (Sandbox Code Playgroud)

或者

x,y,z = 1,2,[3,3,3]
z.insert(0, y)
z.insert(0, x)
Run Code Online (Sandbox Code Playgroud)