一、了解NumPy
本部分内容转自http://www.runoob.com/numpy/numpy-tutorial.html,感谢!
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包,它包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。
二、了解数组与列表的区别
本部分内容转自博主@liulina603,原文https://blog.csdn.net/liulina603/article/details/78672613,在此感谢!
Python中的list是Python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了。例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。
array的创建:参数既可以是list,也可以是元组。使用对应的属性shape直接得到形状。
list1=[1,2,3,'a']
print list1
a=np.array([1,2,3,4,5])
b=np.array([[1,2,3],[4,5,6]])
c=list(a) # array到list的转换
print a,np.shape(a)
print b,np.shape(b)
print c,np.shape(c)
结果:
[1, 2, 3, 'a'] # 元素数据类型不同,并且用逗号隔开
[1 2 3 4 5] (5L,) # 一维数组,类型用tuple表示
[[1 2 3]
[4 5 6]] (2L, 3L)
[1, 2, 3, 4, 5] (5L,)
三、一些容易混淆或者相关联的概念
1.列表list:将一系列任意元素按顺序存储,存储方式是指针,放在方括号中以逗号分隔。如[1, 2, 3, 'a']。
2.元组tuple:不可直接对元素进行直接修改,只能重新定义整个元组;放在圆括号中以逗号分隔。其他基本同列表。如(1, 2, 3, 'a')。
3.字符串str:Python中无“字符”概念,字符串放在单引号或双引号中。与其他概念很好区分,放在此处为引出序列的概念。如‘string’、"string"。
4.序列:以上三种都属于序列。序列均支持索引访问。
5.数组array:是numpy中的一个方法,其内的元素除“数据类型必全部相同”外其他同列表,放在方括号中以空格分隔。如[1 2 3]、['a' 'b' 'c']。
6.集合set:以列表作为set参数形成集合,具有数学意义上集合的特点如无序性(不支持索引访问)、互异性(无重复元素)等。放在花括号中以逗号分隔,如{1, 2, 3, 'a'}。
7.字典dict:为某类的实例,以“键-值对”的形式存储“字段-属性值”。放在花括号中以逗号分隔。如{'a':31, 'bc':5, 'c':3, 'asd':4, '33':56, 'd':0}。
8.矩阵:即二维数组,每个元素之间用逗号分割,每一维(行)放在一个方括号中,不同维(行)之间用逗号分隔,所有维(行)整体再放在一个方括号中。在导入numpy的前提下,a2=np.array([[1,2,3],[2,3,4]])可以定义一个矩阵(二维数组)。下图摘自“矩阵”的百度百科词条。
有关矩阵和多维数组的内容,推荐博文https://www.cnblogs.com/xzcfightingup/p/7598293.html,博主@xzcfightingup整理得很详细!