NumPy 是 Python 在科学计算领域取得成功的关键之一,如果你想通过 Python 学习数据科学或者机器学习,就必须学习 NumPy。我认为 NumPy 的功能很强大,而且入门也不难。
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18/5/14 下午2:23# @Author : Wugang Li# @File : np.py# @Software: PyCharm# @license : Copyright(C), olei.me# @Contact : i@olei.me import numpy as np #创建数组a = np.array([0,1,2,3,4]) # [0 1 2 3 4]b = np.array([0,1,2,3,4]) # [0 1 2 3 4]c = np.arange(5) # [0 1 2 3 4]d = np.linspace(0, 2 * np.pi, 5) # [ 0. 1.57079633 3.14159265 4.71238898 6.28318531]print(a[3]) # 3
其中的linspace的意思是:
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18/5/15 下午2:52# @Author : Wugang Li# @File : juzhen.py# @Software: PyCharm# @license : Copyright(C), olei.me# @Contact : i@olei.me import numpy as np a = np.array( [ [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35] ])print(a[2, 4]) # 25 b = a[0, 1:4]print(b) # [12,13,14] c = a[1:4, 0]print(c) # [16,21,26] d = a[::2, ::2]print(d)# [[11 13 15]# [21 23 25]# [31 33 35]] e = a[:,1]print(e)# [12 17 22 27 32]
上面展示的了矩阵的创建,以及矩阵的切片操作~
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18/5/15 下午3:11# @Author : Wugang Li# @File : juzhen_method.py# @Software: PyCharm# @license : Copyright(C), olei.me# @Contact : i@olei.me import numpy as np a = np.array( [ [11, 12, 13, 14, 15, 0], [16, 17, 18, 19, 20, 1], [21, 22, 23, 24, 25, 2], [26, 27, 28, 29, 30, 3], [31, 32, 33, 34, 35, 4] ]) print(type(a)) # <class 'numpy.ndarray'>print(a.dtype) # int64,总大小的字节print(a.size) # 30print(a.shape) # (5,6),表示五行五列print(a.itemsize) # 每一个条目所占的字节,8bit为1字节,一个int64大小为64bite,64 / 8 = 8print(a.ndim) # 2,表示二维数组print(a.nbytes) # 240,8x30
nbytes表示这个数组中所有元素占用的字节数。你应该注意,这个数值并没有把额外的空间计算进去,因此实际上这个数组占用的空间会比这个值大点
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18/5/15 下午3:21# @Author : Wugang Li# @File : juzhen_ys.py# @Software: PyCharm# @license : Copyright(C), olei.me# @Contact : i@olei.me import numpy as np a = np.arange(25) print(a)# [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]a = a.reshape((5, 5))# [[ 0 1 2 3 4]# [ 5 6 7 8 9]# [10 11 12 13 14]# [15 16 17 18 19]# [20 21 22 23 24]]print(a) b = np.array( [10, 62, 1, 14, 2, 56, 79, 2, 1, 45, 4, 92, 5, 55, 63, 43, 35, 6, 53, 24, 56, 3, 56, 44, 78])b = b.reshape((5, 5))print(b)# [[10 62 1 14 2]# [56 79 2 1 45]# [ 4 92 5 55 63]# [43 35 6 53 24]# [56 3 56 44 78]] print(a + b)print(b - a)print(a * b)print(a / b)print(a ** 2)print(a < b)print(b < a)print(a.dot(b)) # 点积,a的第一行与b的第一列对应的元素相乘的和为新产生的第一个元素# [[ 417 380 254 446 555]# [1262 1735 604 1281 1615]# [2107 3090 954 2116 2675]# [2952 4445 1304 2951 3735]# [3797 5800 1654 3786 4795]]
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18/5/15 下午4:56# @Author : Wugang Li# @File : spectal_juzhen.py# @Software: PyCharm# @license : Copyright(C), olei.me# @Contact : i@olei.me import numpy as np a = np.arange(10)print(a) print(a.sum()) # 45print(a.max()) # 0print(a.min()) # 9print(a.cumsum()) # [ 0 1 3 6 10 15 21 28 36 45]
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18/5/15 下午5:13# @Author : Wugang Li# @File : high_juzhen.py# @Software: PyCharm# @license : Copyright(C), olei.me# @Contact : i@olei.me import numpy as np a = np.arange(0, 100, 10) print(a) # [ 0 10 20 30 40 50 60 70 80 90] indics = [0, 1, 5, -1]b = a[indics]print(b) # [0,10 50 90]
布尔屏蔽是一个奇妙的特性,它允许我们根据指定条件获取数组中的元素。
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18/5/15 下午5:56# @Author : Wugang Li# @File : boolen_masking.py# @Software: PyCharm# @license : Copyright(C), olei.me# @Contact : i@olei.me import matplotlib.pyplot as pltimport numpy as np a = np.linspace(0, 2 * np.pi, 50)print(a)b = np.sin(a)print(b)plt.plot(a,b)mask = b >= 0plt.plot(a[mask], b[mask], 'bo')mask = (b >= 0) & (a <= np.pi / 2)plt.plot(a[mask], b[mask], 'go')plt.show()
出现下面的图:
我们用条件式选择了图中不同的点。蓝色的点(也包含图中的绿点,只是绿点覆盖了蓝点),显示的是值大于零的点。绿点显示的是值大于 0 小于 Pi / 2 的点。
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 18/5/15 下午6:15# @Author : Wugang Li# @File : quexing_index_juzhen.py# @Software: PyCharm# @license : Copyright(C), olei.me# @Contact : i@olei.me import numpy as np a = np.arange(0, 100, 10)print(a) # [ 0 10 20 30 40 50 60 70 80 90]b = a[:5]c = a[a >= 50]print(b) # [ 0 10 20 30 40]print(c) # [50 60 70 80 90] d = np.where(a < 50)print(d) # (array([0, 1, 2, 3, 4]),)e = np.where(a > 50)[0]print(e) # [6 7 8 9]
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。