我是靠谱客的博主 高兴鼠标,这篇文章主要介绍Numpy 生成 Bool型数组、一维转多维数组reshape、多维转一维数组、替换数组元素、提取数组元素、数组交集、差集、过滤数组元素、二维数组反转行、交换数组维度,现在分享给大家,希望可以做个参考。
1. 创建一个 [3,5] 所有元素为 True 的数组
复制代码
1
2
3
4
5
6
7
8
9
10In [162]: b = np.ones((3,5), dtype=bool) In [163]: b Out[163]: array([[ True, True, True, True, True], [ True, True, True, True, True], [ True, True, True, True, True]]) In [164]:
2. 一维数组转二维数组
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16In [164]: a = np.array([1,2,3,4,5,6]) In [165]: a Out[165]: array([1, 2, 3, 4, 5, 6]) In [166]: a.reshape((2,3)) Out[166]: array([[1, 2, 3], [4, 5, 6]]) In [167]: a.reshape(2,-1) Out[167]: array([[1, 2, 3], [4, 5, 6]]) In [168]:
a.reshape(2,-1)
其实这里面的 -1 代表自动生成的意思,因为一共 6 个元素,已经确定了 2 行,那么只能是每行 3 个元素了。
3. 数组所有奇数替换为 -1
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19In [167]: a Out[167]: array([1, 2, 3, 4, 5, 6]) In [168]: b = a.reshape((2,3)) In [169]: b Out[169]: array([[1, 2, 3], [4, 5, 6]]) In [170]: b[b%2==1] = -1 In [171]: b Out[171]: array([[-1, 2, -1], [ 4, -1, 6]]) In [172]:
4. 提取出数组中所有奇数
复制代码
1
2
3
4
5
6
7
8
9
10In [176]: a = np.array([1,2,3,4,5]) In [177]: a Out[177]: array([1, 2, 3, 4, 5]) In [178]: a[a%2==1] Out[178]: array([1, 3, 5]) In [179]:
5. 2 个 NumPy 数组的交集
使用 np.intersect1d
函数可以求两个数组的交集
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13In [179]: a Out[179]: array([1, 2, 3, 4, 5]) In [180]: b = np.array([2,3,6,7]) In [181]: b Out[181]: array([2, 3, 6, 7]) In [183]: np.intersect1d(a,b) Out[183]: array([2, 3]) In [184]:
6. 2 个 NumPy 数组的差集
np.setdiff1d(a, b)
可以计算两个数组 a 和 b 的差集。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14In [186]: a Out[186]: array([1, 2, 3, 4, 5]) In [187]: b Out[187]: array([2, 3, 6, 7]) In [188]: np.setdiff1d(a, b) Out[188]: array([1, 4, 5]) In [189]: np.setdiff1d(b, a) Out[189]: array([6, 7]) In [190]:
7. 筛选出指定区间内的所有元素
注意:(m >2),必须要添加一对括号。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12In [193]: m = np.arange(10).reshape(2, 5) In [194]: m Out[194]: array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) In [195]: m[(m > 2) & (m < 6)] Out[195]: array([3, 4, 5]) In [196]:
8. 交换二维数组的多列
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14In [196]: m =np.arange(10).reshape((2,5)) In [197]: m Out[197]: array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) In [198]: m[:,[1,0,4,3,2]] Out[198]: array([[1, 0, 4, 3, 2], [6, 5, 9, 8, 7]]) In [199]:
9. 二维数组,反转行
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14In [199]: m =np.arange(10).reshape(2,5) In [200]: m Out[200]: array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) In [201]: m[::-1] Out[201]: array([[5, 6, 7, 8, 9], [0, 1, 2, 3, 4]]) In [202]:
10. 生成数值 5~10、shape 为 (3,5) 的随机浮点数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22In [203]: np.random.seed(100) In [204]: np.random.randint(5, 10, (3,5)) Out[204]: array([[5, 5, 8, 5, 7], [9, 7, 7, 7, 7], [6, 5, 5, 9, 8]]) In [205]: np.random.rand(3,5) Out[205]: array([[0.20920212, 0.18532822, 0.10837689, 0.21969749, 0.97862378], [0.81168315, 0.17194101, 0.81622475, 0.27407375, 0.43170418], [0.94002982, 0.81764938, 0.33611195, 0.17541045, 0.37283205]]) In [206]: np.random.randint(5, 10, (3,5)) + np.random.rand(3,5) Out[206]: array([[5.89054594, 7.5769015 , 6.74247969, 6.63018394, 8.58184219], [7.02043913, 8.21002658, 5.54468488, 6.76911517, 5.25069523], [9.28589569, 7.85239509, 5.97500649, 5.88485329, 7.35950784]]) In [207]:
11. 数组维度交换
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14In [60]: a = np.arange(10).reshape(2,5) In [61]: a Out[61]: array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) In [62]: b = a.swapaxes(0, 1) In [63]: b.shape Out[63]: (5, 2) In [64]:
swapaxes()
将一个数组的第 0 轴和第 1 轴进行了交换,由 2 行 5 列变成了 5 行 2列。
12. 多维数组转一维数组
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28In [65]: a = np.arange(10).reshape(2,5) In [66]: a Out[66]: array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) In [67]: a.reshape(-1) Out[67]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) In [68]: a Out[68]: array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) In [70]: a.flatten() Out[70]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) In [71]: a Out[71]: array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) In [72]: a.ravel() Out[72]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) In [73]:
可以看出我们通过 reshape(-1)
、flatten()
和 ravel()
函数都可以将多维数组转换为 1 维数组。
最后
以上就是高兴鼠标最近收集整理的关于Numpy 生成 Bool型数组、一维转多维数组reshape、多维转一维数组、替换数组元素、提取数组元素、数组交集、差集、过滤数组元素、二维数组反转行、交换数组维度的全部内容,更多相关Numpy内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复