Concatenate several np arrays in python

本小妞迷上赌 提交于 2021-02-04 17:59:08

问题


I have several bumpy arrays and I want to concatenate them. I am using np.concatenate((array1,array2),axis=1). My problem now is that I want to make the number of arrays parametrizable, I wrote this function

x1=np.array([1,0,1])
x2=np.array([0,0,1])
x3=np.array([1,1,1])  

def conc_func(*args):
    xt=[]
    for a in args:
        xt=np.concatenate(a,axis=1)
    print xt
    return xt

xt=conc_func(x1,x2,x3)

this function returns ([1,1,1]), I want it to return ([1,0,1,0,0,1,1,1,1]). I tried to add the for loop inside the np.concatenate as such

xt =np.concatenate((for a in args: a),axis=1)

but I am getting a syntax error. I can't used neither append nor extend because I have to deal with numpy arrays and not lists. Can somebody help?

Thanks in advance


回答1:


concatenate can accept a sequence of array-likes, such as args:

In [11]: args = (x1, x2, x3)

In [12]: xt = np.concatenate(args)

In [13]: xt
Out[13]: array([1, 0, 1, 0, 0, 1, 1, 1, 1])

By the way, although axis=1 works, the inputs are all 1-dimensional arrays (so they only have a 0-axis). So it makes more sense to use axis=0 or omit axis entirely since the default is axis=0.




回答2:


Do you need to use numpy? Even if you do, you can convert numpy array to python list, run the following and covert back to numpy.array.

Adding to lists in python will concatenate them...

x1=[1,0,1]
x2=[0,0,1]
x3=[1,1,1]

def conc_func(*args):
    xt=args[0]
    print(args)
    for a in args[1:]:
        xt+=a
    print (xt)
    return xt

xt=conc_func(x1,x2,x3)


来源:https://stackoverflow.com/questions/30960412/concatenate-several-np-arrays-in-python

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!