numpy按列连接两个维数不同的数组

合并不同维数ndarray的方法
博客主要围绕合并两个维数不同的ndarray展开,以一个3×2 numpy数组和一维数组为例,要将一维数组添加到行末尾连接成3×3 numpy数组,按列连接会报错,给出了两种解决方法。

合并两个维数不同的ndarray

假设我们有一个3×2 numpy数组:

x = array(([[1,2], [3, 4], [5,6]]))

现在需要把它与一个一维数组:

y = array(([7, 8,9]))

通过将其添加到行的末尾,连接为一个3×3 numpy数组,如下所示:

array([[1,2,7],
       [3,4,8],
       [5,6,9]])

在numpy中按列连接的方法是:

hstack((x,y))

但是这不行,会报错:

ValueError: arrays must have same number of dimensions

解决方法有两种:

方法一:

>>> x = np.array([[1,2],[3,4],[5,6]])
>>> y = np.array([7,8,9])
>>> np.hstack((x, np.array(([y])).T ))
array([[1, 2, 7],
       [3, 4, 8],
       [5, 6, 9]])

方法二:

>>> x = np.array([[1,2],[3,4],[5,6]])
>>> y = np.array([7,8,9])
>>> np.column_stack((x,y))
array([[1, 2, 7],
       [3, 4, 8],
       [5, 6, 9]])
在 Python 中使用 `NumPy` 库时,将两个数组组合为一个三数组是一个常见的操作。你可以通过以下几种方式实现这个目标: ### 方法一:使用 `np.stack()` ```python import numpy as np # 创建两个数组 a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) # 沿着一个新的轴(axis=0)堆叠这两个数组,形成一个三数组 c = np.stack((a, b), axis=0) print("三数组:") print(c) print("\n形状:", c.shape) # 输出: (2, 2, 2) ``` #### 解释: - `np.stack()` 函用于沿着新轴连接一组数组。 - 参 `axis=0` 表示新增的轴作为最外层度。 - 原始二数组的形状是 `(2, 2)`,组合后得到的三数组形状为 `(2, 2, 2)`。 --- ### 方法二:使用 `np.newaxis` 扩展度后再拼接 ```python # 使用 newaxis 添加一个新的轴,变成三数组 a_expanded = a[np.newaxis, :, :] b_expanded = b[np.newaxis, :, :] # 沿着第0轴进行拼接 c = np.concatenate((a_expanded, b_expanded), axis=0) print("三数组:") print(c) print("\n形状:", c.shape) # 输出: (2, 2, 2) ``` #### 解释: - `a[np.newaxis, :, :]` 将二数组 `a` 变成形状为 `(1, 2, 2)` 的三数组。 - 然后使用 `np.concatenate()` 在第0轴上拼接两个数组。 --- ### 方法三:使用表转换为 NumPy 数组 ```python # 把两个数组放入一个表中,再用 np.array 转换 c = np.array([a, b]) print("三数组:") print(c) print("\n形状:", c.shape) # 输出: (2, 2, 2) ``` #### 解释: - 当你把多个相同形状的二数组放入表,并使用 `np.array()` 转换时,会自动创建一个新的度。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值