微信公众号: 点击蓝色字体小白图像与视觉进行关注
关于技术、关注
yysilence00
。有问题或建议,请公众号留言
- 整理知识,学习笔记
- 发布日记,杂文,所见所想
一:numpy介绍
NumPy是一个功能强大的Python库,主要用于对多维数组执行计算。NumPy这个词来源于两个单词-- Numerical和Python。NumPy提供了大量的库函数和操作,可以帮助程序员轻松地进行数值计算
#引进numpy库
import numpy
这样你就可以用 numpy 里面所有的内置方法 (build-in methods) 了,比如求和与均值。
numpy.max()
numpy.min()
import numpy as np
my_arr = np.arange(1000000)
my_list = list(range(1000000))
# 看下面「numpy 数组」和「列表」之间的计算效率对比:两个大小都是 1000000,把每个元素翻倍,运行 10 次用 %time 记时。
%time for _ in range(10): my_arr2 = my_arr * 2
%time for _ in range(10): my_list2 = [x * 2 for x in my_list]
Wall time: 49 ms
Wall time: 1.68 s
1.1 数组array的创建
#np.array()方法创建
arr = [1, 4, 3.2, 5]
np.array(arr)
array([1. , 4. , 3.2, 5. ])
注意,numpy 数组的输出都带有 array() 的字样,里面的元素用「中括号 []」框住。
#np.arange() 和 np.linspace()方法创建
#定隔的 arange:固定元素大小间隔
#定点的 linspace:固定元素个数
arr_ = np.arange(10)
arr_
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(arr_)
[0 1 2 3 4 5 6 7 8 9]
注:用函数 print 打印 numpy 数组就没有 array() 的字样了,只用其内容,而且元素之间的「逗号」也没有了。
print( np.arange(10) )
print( np.arange(2,10) )
print( np.arange(2,11,2))
[0 1 2 3 4 5 6 7 8 9]
[2 3 4 5 6 7 8 9]
[ 2 4 6 8 10]
函数原型:
arange(start , stop , step)
其中 stop 必须要有,start 和 step 没有的话默认为 1
arr2 = np.linspace(2,8,3)
arr2
array([2., 5., 8.])
print(arr2)
[2. 5. 8.]
注:用函数 print 打印 numpy 数组就没有 array() 的字样了,只用其内容,而且元素之间的「逗号」也没有了。
函数原型:
alinspace (start , stop , num))
其中 start,stop 必须要有和 num 没有的话默认为 50
之间步长计算方法为(stop - start) / (num - 1)
NumPy 创建数组的其他特性
- 用 zeros() 创建全是 0 的 n 维数组
- 用 ones() 创建全是 1 的 n 维数组
- 用 random() 创建随机 n 维数组
- 用 eye() 创建对角矩阵 (二维数组)
对于前三种,由于输出是 n 为数组,它们的参数是一个「标量」或「元组类型的形状」,下面三个例子一看就懂了:
print( np.zeros(6) ) # 标量5代表形状(5,)
print( np.ones((2,5)) )
print( np.random.random((2,3,4)) )
[0. 0. 0. 0. 0. 0.]
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
[[[0.96070029 0.13700133 0.86750795 0.60046375]
[0.51925163 0.25111592 0.92045058 0.92544552]
[0.31744394 0.46865624 0.6622886 0.77742483]]
[[0.94793251 0.27383846 0.99977759 0.45765543]
[0.70677173 0.07758811 0.78253172 0.46340084]
[0.25709134 0.32701264 0.29887367 0.11625852]]]
#对于函数 eye(),它的参数就是一个标量,控制矩阵的行数或列数:
np.eye(4)
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
此外还可以设定 eye() 里面的参数 k
- 默认设置 k = 0 代表 1 落在对角线上
- k = 1 代表 1 落在对角线右上方
- k = -1 代表 1 落在对角线左下方
np.eye(4, k=1)
array([[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 0.]])
1.2 数组array特性
我们来看看数组有什么属性 (attributes) 和方法 (methods)。
一维数组
arr3 = np.array([1, 2.1, 5, 4.3])
arr3
array([1. , 2.1, 5. , 4.3])