NumPy是python语言的一个扩展程序库,支持大量的维度数组和矩阵运算,此外也针对数组运算提供了大量的的数学函数库。NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含:
import numpy as np #使用时要先导入库
ndarray内部由以下内容组成:
numpy.array(object,
dtype=None,
copy=True,
order=None,
subok=False,
ndmin=0)
a = np.array([1,2,3,4,5])
返回:array([1, 2, 3, 4, 5])
data = [[1,2,3,4,5],[1,2,3,4,5]]
b = np.array(data)
b.ndim
返回值:
array([[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5]])
2
NumPy支持的数据类型比Python内置的类型要多很多,其中部分类型对应为Python内置的类型。
a = np.array([1,2,3,4,5])
a.dtype
返回:dtype('int32')
ndarray对象属性:
属性 | 说明 |
---|---|
ndarray.ndim | 秩,即轴的数量或维度的数量 |
ndarray.shape | 数组的维度,对于矩阵,n行m列 |
ndarray.size | 数组元素的总个数,相当于shape中n*m |
ndarray. dtype | ndarray对象中每个元素的大小,以字节为单位 |
ndarray.itemsize | ndarray对象中每个元素的大小,以字节为单位 |
ndarray.flags | ndarray对象的内存信息 |
ndarray.real | ndarray元素的实部 |
ndarray.imag | ndarray的虚部 |
ndarray.data | 包含实际数组元素的缓冲去,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性 |
a = np.arange(25, dtype=np.float_).reshape(5,5)
b = np.array([1,2,3,4,5])
np.zeros(shape, dtype=float, order='C')
e = np.zeros(5)
返回值:array([0., 0., 0., 0., 0.])
s1 = np.ones(5)
s2 = np.ones([5,5], dtype=float)
返回值:
array([1., 1., 1., 1., 1.])
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
numpy.arange(start, stop, step, dtype)
arr1 = np.arange(10)
arr2 = np.arange(-10, 10, 2)
arr3 = np.arange(-10, 10, 2, dtype=float)
返回值:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([-10, -8, -6, -4, -2, 0, 2, 4, 6, 8])
array([-10., -8., -6., -4., -2., 0., 2., 4., 6., 8.])
numpy.linspace(start,
stop,
num=,
endpoint=True,
retstep=False,
dtype=None)
a1 = np.linspace(1, 5, 6)
a2 = np.linspace(0, 5, 6, endpoint=False)
返回值:
array([1. , 1.8, 2.6, 3.4, 4.2, 5. ])
array([0., 0.83333333, 1.66666667, 2.5, 3.33333333, 4.16666667])
numpy.logspace(start,
stop,
num=,
endpoint=True,
base=,
dtype=None)
a = np.logspace(1,10,10,base=2)
返回值:
array([2., 4., 8., 16., 32., 64., 128., 256., 512., 1024.])
在一维数组中,我们可以通过中括号指定索引获取第i个值(从0开始计数)。
如果想要同时选择多个项,可以在方括号中传递索引数组,比如u我们获取数组a的第2个和第5个元素,则为a[[1, 4]]。
a = np.random.randn(6)
a[2]
a[-1]
a[[1, 4]]
返回值:
array([-0.14606223, -0.17107517, 0.69222811, 0.86525335, -0.45140777, 1.02867372])
0.6922281089515185
1.0286737226055331
array([-0.17107517, -0.45140777])
对于二维数组,则被表示为行和列组成的矩形数组,由两个轴定义,其中轴0由行表示,轴1由列表示。[行索引, 列索引]
b = np.random.randint(5, size=(2, 4))
b[0,0]
b[1,2]
返回值:
array([[1, 3, 4, 0],
[3, 3, 2, 4]])
1
2
a[start:stop:step]
c = np.arange(10)
c[1:6]
d = np.random.randn(16).reshape(4,4)
d[0,:] #获取第一行
d[:,0] #获取第一列
d[1:3,1:3] #获取第2行至第3行,以及第2列至第3列的矩阵元素
d[[1,3],1:3] #可以指定索引数组(行或列的索引不是连续的)
返回值:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([1, 2, 3, 4, 5])
array([[ 0.28468914, 0.12029439, -1.36153591, -0.70530678],
[ 1.11107553, 0.66395088, 0.07381654, 0.13541892],
[-0.34753157, -0.45256391, 0.16406101, 0.53094758],
[ 0.56547094, -0.82115474, 1.59996863, 0.38750278]])
array([ 0.28468914, 0.12029439, -1.36153591, -0.70530678])
array([ 0.28468914, 1.11107553, -0.34753157, 0.56547094])
array([[ 0.66395088, 0.07381654],
[-0.45256391, 0.16406101]])
array([[ 0.66395088, 0.07381654],
[-0.82115474, 1.59996863]])