numpy包(模块)几乎总是用于Python中的数值计算。这个软件包为Python提供了高性能的向量、矩阵、张量数据类型。它是在C和Fortran中创建的,因此当计算被矢量化(用矩阵和矢量表示操作)时,性能很高。
1.模块的导入:
%matplotlib inline
import matplotlib.pyplot as plt
from numpy import *
2.数组创建numpy
有几种初始化numpy数组的方法,例如:使用Python的list或tuple。使用旨在创建Numpy数组的函数,如arrange、linspace等。从文件中读取数据(例如Python pickle格式)
2.1根据列表创建numpy.array
v = array([1,2,3,4])
v
M = array([[1, 2], [3, 4]])
M
v和M 都是ndarray类型的对象,由numpy模块创建。
type(v), type(M)
v数组和M数组的区别在于它们的尺寸(形式)。我们可以使用ndarray.shape属性来获取大小信息。
v.shape
M.shape
矩阵中元素的数量可以通过属性ndarray.size
M.size
也可以使用numpy方法numpy.shape 和 numpy.size
shape(M)
size(M)
numpy.ndarray 看起来像一个普通的 Python 列表。使用它们而不是Python列表有几个原因。
Python的列表是非常常见的。它们可以包含任何对象。他们是动态类型化的。它们不支持矩阵和诗词作品等数学运算。由于动态类型的原因,在Python中用list实现这种操作并不是很有效。
Numpy数组是静态类型化和同质化的。元素类型是在创建数组时定义的(那么数组数据类型可以改变)。
Numpy数组不是很耗费内存。
得益于静态类型化,数学函数如乘积和numpy数组的和可以在编译语言中实现(使用C和Fortran)。
使用ndarray数组的dtype(数据类型)属性,我们可以看到数组的数据类型。
M.dtype
试图分配一个错误类型(不一样的类型)的值会导致错误。
M[0,0] = "hello"
创建数组时,可以分别指定数据类型。
M = array([[1, 2], [3, 4]], dtype=complex)
M
通常使用以下dtype值:int、float、complex、bool、object等。
我们也可以用比特来指定大小:int64、int16、float128、complex128。
3.使用函数生成数组
使用python列表来指定大型数组是不切实际的。你可以使用各种Numpy方法。
3.1arrange
x = arange(0, 10, 1) # arguments: start, stop, step
x
x = arange(-1, 1, 0.1)
x
3.2linspace 和 logspace
使用linspace,区间的两端都被包括在内,参数:(开始,停止,点的数量)
linspace(0, 10, 25)
logspace(0, 10, 10, base=e)
3.3mgrid
x, y = mgrid[0:5, 0:5]
x
y