机器学习和数据分析-numpy.ndarray中的合并与分割

本文详细介绍了使用NumPy进行数组的合并与分割操作,包括concatenate、vstack、hstack、split、vsplit和hsplit等函数的使用方法,通过实例展示了如何处理一维和二维数组,以及不同维度数组之间的转换与合并。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.np.concatenate 数组合并

2.np.vstack  垂直合并(合并在下方)

3.np.hstack 水平合并(合并在右侧)

4.np.split  数组分割

5.np.vsplit  分成上下两部分

6.np.hsplit 分成左右两部分

一:合并

1.启动jupyter,创建一个信息的notebook,导入numpy

import numpy as np

2.合并两个一维数组

#1.创建两个数组a和b
a = np.array([1,2,3])
b = np.array([4,5,6])

#2.将数组合并成c
c = np.concatenate([a,b])
c
#结果:array([1, 2, 3, 4, 5, 6])

运行效果图如下:

3.合并二维数组

#1定义一个二维数组A
A = np.arange(6).reshape(-1,3)
A
#结果:array([[0, 1, 2],
#            [3, 4, 5]])

#2.定义一个二维数组B
B = np.arange(9).reshape(-1,3)
B
#结果:array([[0, 1, 2],
#             [3, 4, 5],
#             [6, 7, 8]])

#3.将二维数组A和B,合并成数组C
C = np.concatenate([A,B])
C
#结果:array([[0, 1, 2],
#            [3, 4, 5],
#            [0, 1, 2],
#            [3, 4, 5],
#            [6, 7, 8]])

运行效果图如下:

 4.案例练习合并数组:

两个样本数据,身高,体重,年龄

X1 = np.array([22,168,62],[18,163,59])  X2=np.array([19,157,65],[20,175,72])

 

#1.定义两个样本数据
#               age heigt  weight
X1 = np.array([[22,  168,  62],
               [18,  163,  59]]) 
X2 = np.array([[19,  157,  65],
               [20,  175,  72]])

#2.输出第一个样本数据X1
X1
#结果:array([[ 22, 168,  62],
#            [ 18, 163,  59]])

#3.输出第一个样本数据X2
X2
#结果:array([[ 19, 157,  65],
#            [ 20, 175,  72]])

#4.这两组数据可能来自不同的渠道,所以要合并在一起
X = np.concatenate([X1,X2])
X
#结果:array([[ 22, 168,  62],
#            [ 18, 163,  59],
#            [ 19, 157,  65],
#            [ 20, 175,  72]])

运行效果如下:

横向合并,第一组数据年龄和身高,第二组数据有体重,将两组数据合并在一起

#1.定义年龄和身高数据X1,体重数据X2
#               age height
X1 = np.array([[22, 168],
               [18, 163]])
#              weight   
X2 = np.array([[62],
               [69]])


#2.将升高和体重横向合并在一起,行数需要统一
X = np.concatenate([X1,X2],axis=1)
X
#结果:array([[ 22, 168,  62],
#            [ 18, 163,  69]])

5.一维数组和二维数据的合并

#1.定义一个一维数组a
a = np.array([88,99])
a
#结果:array([88, 99])

#2.定义一个二维数组A
A = np.arange(4).reshape(-1,2)
A
#结果:array([[0, 1],
#            [2, 3]])

#3.直接合并两个数组,报错
np.concatenate([A,a])
#结果: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 1 dimension(s)

运行结果如下:

 5.1将一维数组转化为二维数组再合并

#将一维数组转化为二维数组,再合并
np.concatenate([A,a.reshape(1,-1)])
#结果:array([[ 0,  1],
#            [ 2,  3],
#            [88, 99]])

运行效果图如下:

5.2 直接在垂直方向进行堆叠:np.vstack([A,a])

运行效果图如下:

 

5.3在水平方向进行堆叠,np.hstack([A,a.reshape(-1,1)]),需将a转化为与A行数相等

运行效果图如下:

二: 分割

6.一维数组分割

#1.定义一维数组x
x = np.arange(10)
x
#结果:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

#2.将x分割成两段
np.split(x,2)
#结果:[array([0, 1, 2, 3, 4]), array([5, 6, 7, 8, 9])]

#3.将x平均分割成5段
np.slpit(x,5)
#结果:[array([0, 1]), array([2, 3]), array([4, 5]), array([6, 7]), array([8, 9])]

#4.指定分割点进行分割
np.split(x,[3,7])
#结果:[array([0, 1, 2]), array([3, 4, 5, 6]), array([7, 8, 9])]

#5.指定分割点,并用参数接受分割后的值
x1,x2,x3 = np.split(x,[3,7])
x1
#结果:array([0, 1, 2])
x2
#结果:array([3, 4, 5, 6])
x3
#结果:array([7, 8, 9])


运行效果图如下:

7.二维数组分割

#1.定义一个二维数组
A = np.arange(16).reshape(4,-1)
A
#结果:array([[ 0,  1,  2,  3],
#            [ 4,  5,  6,  7],
#            [ 8,  9, 10, 11],
#            [12, 13, 14, 15]])

#2.指定分割点分割,其中[3]分割点指0,1,2行,不包含3
A1,A2 = np.split(A,[3])
A1
#结果:array([[ 0,  1,  2,  3],
#            [ 4,  5,  6,  7],
#            [ 8,  9, 10, 11]])
A2
#结果:array([[12, 13, 14, 15]])

#3.垂直切割,其中[3]分割点指0,1,2列,不包含3
A1,A2 = np.split(A,[3],axis=1)
A1
#结果:array([[ 0,  1,  2],
#            [ 4,  5,  6],
#            [ 8,  9, 10],
#            [12, 13, 14]])
A2
#结果:array([[ 3],
#            [ 7],
#            [11],
#            [15]])

#4.分成上下两部分
np.vsplit(A,[3])
#结果:[array([[ 0,  1,  2,  3],
#             [ 4,  5,  6,  7],
#             [ 8,  9, 10, 11]]),
#      array([[12, 13, 14, 15]])]

#5.分成左右两部分
np.hsplit(A,[3])
#结果:[array([[ 0,  1,  2],
#             [ 4,  5,  6],
#             [ 8,  9, 10],
#             [12, 13, 14]]),
#      array([[ 3],
#             [ 7],
#             [11],
#             [15]])]

执行效果图如下:

 

8.应用,截取最后一列数据出来

#1.有一个组数据X1
#             age  heignt weight type
X1 = np.array([[22, 168,   62,    1],
              [18,  163,   58,    1],
              [19,  153,   59,    0]])

#2.将最后一列分割出来
X,y = np.hsplit(X1,[-1])
X
#结果:array([[ 22, 168,  62],
#            [ 18, 163,  58],
#            [ 19, 153,  59]])
y
#结果:array([[1],
#            [1],
#            [0]])

运行效果图如下:

ndarrayPython中的一种多维数组,可以用来存储操作大量的数值数据。它具有许多有用的属性方法,可以让用户更容易地处理数据。`numpy.ndarray` 是 NumPy中的一个类,用于表示 N 维数组(即多维数组)。它是 NumPy 的核心数据结构之一,提供了许多高效的操作,例如数组索引、切片、算术运算、数学函数等等。 在使用 `numpy.ndarray` 时,通常需要先导入 NumPy 库,然后通过 `numpy.array()` 函数将 Python 列表或元组转换成 N 维数组,例如: ```python import numpy as np # 从列表创建一个一维数组 a = np.array([1, 2, 3]) print(a) # 输出:[1 2 3] # 从元组创建一个二维数组 b = np.array([(1, 2, 3), (4, 5, 6)]) print(b) # 输出: # [[1 2 3] # [4 5 6]] ``` 可以通过 `ndarray.shape` 属性获取数组的维度信息,通过 `ndarray.dtype` 属性获取数组元素的数据类型,例如: ```python # 获取数组的形状 print(a.shape) # 输出:(3,) print(b.shape) # 输出:(2, 3) # 获取数组元素的数据类型 print(a.dtype) # 输出:int64 print(b.dtype) # 输出:int64 ``` 还可以使用各种方法对数组进行操作,例如: ```python # 数组加法 c = a + b print(c) # 输出: # [[2 4 6] # [5 7 9]] # 数组乘法 d = a * b print(d) # 输出: # [[ 1 4 9] # [ 4 10 18]] # 数组转置 e = b.T print(e) # 输出: # [[1 4] # [2 5] # [3 6]] ``` 这些只是 `numpy.ndarray` 类提供的一些基本功能,NumPy 库还有更多高级的特性函数可以探索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值