大学学习一直使用matlab处理矩阵,行列式运算。matlab功能强大,确实好用,但是这么多年基本忘光了。现在工作中推荐算法,数据处理,机器学习,人工智能,数据分析处理确实有一定需要,而且目前很多方面些欠缺,需要完善这方面的知识,也就需要把矩阵,行列式等相关的东西再拾回来。主要是最近发现numpy,matplotlab,pandas,scipy可以完全替代matlab,而且各个模块免费的,还因为有相当丰富的网络教程。那既然各个条件都满足,所以决定静下心来好好的学习一下这些东西,想最终学以致用。首先学习numpy,一周左右弄清所有的概念和使用,会有4-6篇文章。
NumPy 是一个运行速度非常快的数学库,主要用于数组计算。支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包含:
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
>>> import numpy as np
>>> np.__version__
'1.16.3'
ndarray是一个N维,相同类型的数据的组合,每个元素占用相同类型的内存空间,并且以0开始索引。
ndarray 内部由以下内容组成:
下面通过实例理解:
>>> a = [1,2,3,4]
>>> dt = np.array(a)
>>> print(dt)
[1 2 3 4]
>>> a = [[1,2,3],[4,5,6]]
>>> dt = np.array(a)
>>> print(dt)
[[1 2 3]
[4 5 6]]
>>> a = [[[1,2,3]],[[4,5,6]]]
>>> dt = np.array(a)
>>> print(dt)
[[[1 2 3]]
[[4 5 6]]]
>>> a = [[1,2,3],[4,5,6]]
>>> dt = np.array(a,dtype='float')
>>>
>>> print(dt)
[[1. 2. 3.]
[4. 5. 6.]]
>>> a = [[1,2,3],[4,5,6]]
>>> dt = np.array(a,dtype='complex')
>>> print(dt)
[[1.+0.j 2.+0.j 3.+0.j]
[4.+0.j 5.+0.j 6.+0.j]]
>>>
dtype类型和Python中的数据类型一样,用来标识变量类型,不过numpy中的数据类型远比python类型要复杂,我们本章只做简单的介绍,后面会有单独的章节详细介绍。
类型名 | 说明 |
---|---|
int_ | 默认类型 int32或者int64 |
int8 | 有符号整数 (-128 到 127) |
int16 | 有符号整数(-32768 到 32767) |
int32 | 有符号整数(-2147483648 到2147483647) |
int64 | 有符号整数(-9223372036854775808 到 9223372036854775807) |
uint8 | 无符号整数(0 到 255) |
uint16 | 无符号整数(0 到 65535) |
uint32 | 无符号整数(0 到 4294967295) |
uint64 | 无符号整数(0 到 18446744073709551615) |
类型名 | 说明 |
---|---|
float_ | float64的简写类型 |
float16 | 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
float32 | 半精度浮点数,包括:1 个符号位,8 个指数位,32 个尾数位 |
float64 | 半精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位 |
类型名 | 说明 |
---|---|
complex_ | complex128的简写类型,即 128 位复数 |
complex64 | 表示双 32 位浮点数(实数部分和虚数部分) |
complex128 | 表示双 64 位浮点数(实数部分和虚数部分) |
使用示例简单理解:
待续。。。。