Python NumPy 拆分数组
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
前言
NumPyNumerical Python的缩写是一个开源的Python科学计算库。使用NumPy就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍Python NumPy 拆分数组。
1、使用array_split()拆分NumPy数组
拆分是联接的反向操作。
联接将多个数组合并为一个拆分将一个数组拆分为多个。
我们使用array_split()拆分数组将要拆分的数组和拆分次数传递给它。
例如
将数组分为3部分
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr)
上面代码运行结果如下
[array([1, 2]), array([3, 4]), array([5, 6])]
注意返回值是一个包含三个数组的数组。
如果数组中的元素少于要求的数量它将从末尾进行相应调整。
例如
将数组分成4个部分:
import numpy as np
arr = np.array([1, 2, 7, 13, 8, 3, 13, 4, 5, 6])
newarr = np.array_split(arr, 4)
print(newarr)
上面代码运行结果如下
[array([1, 2, 7]), array([13, 8, 3]), array([13, 4]), array([5, 6])]
注意我们还有可用的方法split()但是当元素较少用于拆分的源数组中时它不会调整元素如上面的示例array_split()正常工作但split()会失败。
2、拆分成数组
array_split()方法的返回值是一个包含每个拆分的数组。
如果你把一个数组分成3个数组可以像任何数组元素一样从结果中访问它们:
例如
访问拆分的数组
import numpy as np
arr = np.array([1, 22, 3, 21, 5, 6])
newarr = np.array_split(arr, 3)
print(newarr[0])
print(newarr[1])
print(newarr[2])
上面代码运行结果如下
[ 1 22]
[ 3 21]
[5 6]
3、拆分二维数组
拆分二维数组时请使用相同的语法。
使用array_split()方法传入要拆分的数组和要拆分的次数。
例如
将二维数组拆分为三个二维数组。
import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
newarr = np.array_split(arr, 3)
print(newarr)
上面代码运行结果如下
[array([[1, 2],
[3, 4]]), array([[5, 6],
[7, 8]]), array([[ 9, 10],
[11, 12]])]
上面的示例返回三个2-D数组。
让我们看另一个示例这次2-D数组中的每个元素都包含3个元素。
例如
将二维数组拆分为三个二维数组。
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
newarr = np.array_split(arr, 3)
print(newarr)
上面代码运行结果如下
[array([[1, 2, 3],
[4, 5, 6]]), array([[ 7, 8, 9],
[10, 11, 12]]), array([[13, 14, 15],
[16, 17, 18]])]
上面的示例返回三个2-D数组。
此外您可以指定要进行拆分的轴。
下面的示例还返回三个2-D数组但它们沿行axis=1分开。
例如
沿行将2-D数组拆分为三个2-D数组。
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
newarr = np.array_split(arr, 3, axis=1)
print(newarr)
上面代码运行结果如下
[array([[ 1],
[ 4],
[ 7],
[10],
[13],
[16]]), array([[ 2],
[ 5],
[ 8],
[11],
[14],
[17]]), array([[ 3],
[ 6],
[ 9],
[12],
[15],
[18]])]
Process finished with exit code 0
另一种解决方案是使用与hstack()相反的hsplit()
例如
使用hsplit()方法将二维数组沿行拆分为三个二维数组。
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
newarr = np.hsplit(arr, 3)
print(newarr)
上面代码运行结果如下
[array([[ 1],
[ 4],
[ 7],
[10],
[13],
[16]]), array([[ 2],
[ 5],
[ 8],
[11],
[14],
[17]]), array([[ 3],
[ 6],
[ 9],
[12],
[15],
[18]])]
Process finished with exit code 0
注意与vstack()和dstack()类似的替代版本可以作为vsplit()和dsplit()。