本篇主要用于自己学习Python科学计算的学习笔记,便于之后细节不清时的查阅。
主要参考内容:莫烦的Python——Numpy&Pandas教程
《Python科学计算》张若愚著,清华大学出版社
numpy的使用会使很多计算更快,因为Numpy是基于C语言编写的,可以提高计算速度
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import numpy as np
2
3 array = np.array([[1,2,3],
4 [2,3,4]])
5 #将列表 [[1, 2, 3], [2 ,3 ,4]] 输出型为2行3列的矩阵
6 print(array)
7 print("number of dim:",array.ndim) #输出矩阵的维度
8 print("shape",array.shape) #输出矩阵的形状
9 print("size",array.size) #输出矩阵的大小(2*3)
10
11 b = np.array([1,2,3,4])
12 print(b)
13 print(b.shape)
可以通过修改数组的shape属性,在保持数组元素个数不变的情况下,改变数组每个轴的长度。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import numpy as np
2
3 array = np.array([[1,2,3],
4 [2,3,4]])
5 array.shape = 3,2
6 print(array)
当设置某个轴的元素为-1时,将自动计算此轴的长度
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import numpy as np
2
3 array = np.array([[1,2,3],
4 [2,3,4],
5 [3,4,5],
6 [4,5,6]])
7 array.shape = 3,-1
8 print(array)
使用数组的reshape()方法,可以创建指定形状的新数组,而原数组的形状保持不变;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = np.array([1, 2, 3, 4]) 2 b = a.reshape((2,2)) 3 print(a) 4 print(b)
值的注意的一点是,数组a和数组b共享数据存储空间,因此修改其中一个数组的元素都会修改另一个数组的内容
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = np.array([1, 2, 3, 4]) 2 b = a.reshape((2,2)) 3 a[1] = 1222 4 print(a) 5 print(b)
接下来就是矩阵的建立
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = np.array([2, 3, 4])
2 print(a)
3 #可以看到和列表相差不大,但是没有逗号
4 print(a.dtype)
5 a = np.array([2, 3, 4],dtype=np.int64)
6 print(a.dtype)
7 a = np.array([2, 3, 4],dtype=np.float64)
8 print(a.dtype)
在创建的过程中也可以对其中数值类型进行定义。Numpy的数值对象的运算速度比Python内置类型的运算速度要慢,若大量使用,应尽量避免。
对数组的元素类型进行转换。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import numpy as np
2
3 t1 = np.array([1,2,3,4],dtype = np.float)
4 t2 = np.array([1,2,3,4],dtype = np.complex)
5 t3 = t1.astype(np.int32)
6 t4 = t2.astype(np.complex64)
建立零矩阵、一矩阵、空矩阵
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import numpy as np
2
3 a = np.zeros( (3,4) )
4 #a = np.zeros( (3,4) ,dtype=np.float)
5 #a = np.ones( (3,4) )
6 #a = np.empty( (3,4))
7 #a = np.empty( (3,4) , dtype = np.int)
8 print(a)
使用full()对数组元素进行指定值的初始化
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import numpy as np
2
3 a = np.full(4, np.pi)
4 print(a)
此外,zeros_like()、ones_like()、empty_like()等函数创建与参数数组形状相同和类型相同的数值,因此与zeros_like(a)和zeros(a.shape,a.dtype)效果相同
arange()可以通过开始值、终值、步长来创建表示等差数列的一维数组(不包含终值);
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a = np.arange(0, 1, 0.1) 2 print(a) 3 #结果:[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
linspace()