Matlab转Python问题之多数组拼接

有的时候希望好几个数组可以拼接,就像是Matlab中,可以直接使用arr = [a,b,c],或者

arr = [a;b;c],不过确实没找到什么办法,所以很苦恼,然后自己就动手写了个函数,萌新代码多多包涵,希望可以帮助到你,共勉。

def concentrate_arrs(*args, axis=0, h=0):
    """
    :param args:
    :param axis: 0是横着合并,1是竖着合并
    :param h: 0是把一维数组变成一行,1是变成一列
    :return:
    """
    new_arr = {}
    for i, arr in enumerate(args):
        if not isinstance(arr, np.ndarray) or arr.ndim == 1:
            if h == 0:
                new_arr[i] = np.array([arr]).reshape((1, -1))
            else:
                new_arr[i] = np.array([arr]).reshape((1, -1))
        else:
            new_arr[i] = arr

    if axis == 0:
        temp = new_arr[0]
        for i in range(1, len(new_arr)):
            temp = np.hstack((temp, new_arr[i]))
        return temp

    else:
        temp = new_arr[0]
        for i in range(1, len(new_arr)):
            temp = np.vstack((temp, new_arr[i]))
        return temp

测试

aa = concentrate_arrs(2, 3, 4 * np.ones((3)))
print(aa)
out:array([[2., 3., 4., 4., 4.]])

aa = concentrate_arrs(2* np.ones((2)), 3* np.ones((2)), 4 * np.ones((2)))
print(aa)
out:[[2. 2. 3. 3. 4. 4.]]

aa = concentrate_arrs(2 * np.ones((2, 2)), 3 * np.ones((2, 2)), 4 * np.ones((2, 2)))
print(aa)
out:[[2. 2. 3. 3. 4. 4.]
     [2. 2. 3. 3. 4. 4.]]

aa = concentrate_arrs(2 * np.ones((2, 2)), 3 * np.ones((2, 2)), 4 * np.ones((2, 2)), axis=1)
print(aa)
out:[[2. 2.]
     [2. 2.]
     [3. 3.]
     [3. 3.]
     [4. 4.]
     [4. 4.]]

aa = concentrate_arrs(2, 3, 4 * np.ones((3, 1)), axis=1)
print(aa)
out:[[2.]
     [3.]
     [4.]
     [4.]
     [4.]]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空花缱绻三分

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值