python第三方库之numpy

来源:互联网 发布:js正则表达式 冒号 编辑:程序博客网 时间:2024/05/16 03:15

写在前面:

python的中文意思是蟒蛇,而anaconda的中文意思也有巨蟒的意思,理所当然,anaconda和python之间就有着非常微妙的关系。学习numpy的话还是推荐直接安装anaconda,里面有很多三方库和依赖,大大降低了安装的难度,推荐~


numpy是什么呢?使用python学习机器学习的话,很容易就会接触到numpy,根据百度词条的解释:NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵。也就是说,numpy是用来处理大型矩阵的一个工具,它可以创建一定大小的矩阵,并且对于矩阵转置,矩阵相乘都有良好的支持。


一、numpy的使用示例:

按照惯例,引用的时候别名一般为np

>>> import numpy as np
1)构造array,arange,ones,zeros,empty

arange是numpy中的方法,相当于python里的(x)range,不同的是arange返回的是一个array,而(x)range返回的是一个range对象

>>> np.arange(6)
array([0, 1, 2, 3, 4, 5])

此外,arange的步长还可以是小数

>>> np.arange(6,7,0.2)
array([ 6. ,  6.2,  6.4,  6.6,  6.8])

ones和zeros就是构造全为1或者是0的数组

>>> np.ones(5)
array([ 1.,  1.,  1.,  1.,  1.])

>>> np.zeros((5,2))
array([[ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.]])

构造5*2的全为0的数组

empty就是只指定数组的大小,但是不指定数组的内容,根据电脑的不同,显示出的结果不同。所以在使用前请一定要记得赋值

>>> np.empty(6)
array([  0.00000000e+000,   4.94065646e-324,   9.88131292e-324,
         1.48219694e-323,   1.97626258e-323,   2.47032823e-323])


除了上面几种方法,还可以使用list来赋值:

>>> np.array([1,2,2.1])
array([ 1. ,  2. ,  2.1])


2)shape和reshape

一个是名词,表示形状大小,一个是动词,表示的是重新生成形状为...的矩阵

>>> np.arange(6).reshape(2,3)
array([[0, 1, 2],
       [3, 4, 5]])

用reshape将刚刚生成的array转换为2*3形状的array

>>> np.arange(6).reshape(2,3).shape
(2, 3)

用shape查看这个array的行列数

注意:reshape的数组大小和原数组大小一定要保持一致,否则会报错


3)ndim,dim是dimension的缩写,n dimension代表n维,该数组有几维

用刚刚的数组来说:

>>> np.arange(6).reshape(2,3).ndim
2

一共有2维,是个二维数组

>>> np.arange(8).reshape(2,2,2).ndim
3

这就是个三维数组了


4)dtype.name,查看数值类型

>>> np.arange(8).reshape(2,2,2).dtype
dtype('int64')

>>> np.arange(8).reshape(2,2,2).dtype.name
'int64'

可以看出来dtype就是知道这个数组的类型是什么,而name就是去除这个类型的名称

>>> np.ones(5).dtype.name
'float64'

比较特别的是,ones和zeros出来的数据的类型都是float64的


5)itemsize

查看每个数组元素的字节大小

>>> np.arange(6).reshape(2,3).itemsize
8

刚刚看了,每个元素的类型是int64,而int64的字节大小就是8


7.size

看名字很容易知道,就是这个array的元素个数

>>> np.arange(6).reshape(2,3).size
6

>>> np.arange(8).reshape(2,2,2).size
8


8.type

可以用type来查看下这个array的类型:

>>> a=np.arange(8).reshape(2,2,2)
>>> type(a)
<class 'numpy.ndarray'>

是class中的n维数组


9.linspace

就是均分距离的意思

>>> np.linspace( 0, 1, 11)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ])

将0-1均匀的分为11份


二、数组运算

1.基本算数运算,加减乘除法

>>> a=np.array([1,2,3,4])
>>> b=np.array([5,6,7,8])
>>> a+b
array([ 6,  8, 10, 12])
>>> a-b
array([-4, -4, -4, -4])

>>> a*b
array([ 5, 12, 21, 32])
>>> a/b
array([ 0.2       ,  0.33333333,  0.42857143,  0.5       ])

可以看出,基本算数运算时基于每个对应元素之间的

2.逻辑运算

>>> a>3
array([False, False, False,  True], dtype=bool)

将a中结果挨个与3比较大小,得出结果

3.指数计算

>>> a**3
array([ 1,  8, 27, 64])

4.矩阵相乘和矩阵点乘

矩阵相乘就是对应元素相乘的结果

>>> A=np.array([1,2])
>>> B=np.array([3,4])
>>> A*B
array([3, 8])

矩阵点乘

就是线代里面的矩阵乘法:

>>> A.dot(B)
11

4.sum.min,max

>>> a=np.array([1,2,3,4])
>>> a
array([1, 2, 3, 4])
>>> a.sum()
10

>>> a.max()
4
>>> a.min()
1

>>> b=a.reshape(2,2)
>>> b
array([[1, 2],
       [3, 4]])
>>> b.sum(axis=0)

array([4, 6])

b.sum(axis=0)表示对每行的对应元素进行求和

原创粉丝点击