Numpy

numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算。这个库的前身是1995年就开始开发的一个用于数组运算的库。经过了长时间的发展,基本上成了绝大部分Python科学计算的基础包,当然也包括所有提供Python接口的深度学习框架。

numpy在Linux下的安装已经在5.1.2中作为例子讲过,Windows下也可以通过pip,或者到下面网址下载:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

Obtaining NumPy & SciPy libraries

5.3.1 基本类型(array)

array,也就是数组,是numpy中最基础的数据结构,最关键的属性是维度和元素类型,在numpy中,可以非常方便地创建各种不同类型的多维数组,并且执行一些基本基本操作,来看例子:

import numpy as np
 
a = [1, 2, 3, 4]        #
b = np.array(a)             # array([1, 2, 3, 4])
type(b)                     # <type 'numpy.ndarray'>
 
b.shape                     # (4,)
b.argmax()                  # 3
b.max()                     # 4
b.mean()                    # 2.5
 
c = [[1, 2], [3, 4]]    # 二维列表
d = np.array(c)             # 二维numpy数组
d.shape                     # (2, 2)
d.size                      # 4
d.max(axis=0)               # 找维度0,也就是最后一个维度上的最大值,array([3, 4])
d.max(axis=1)               # 找维度1,也就是倒数第二个维度上的最大值,array([2, 4])
d.mean(axis=0)              # 找维度0,也就是第一个维度上的均值,array([ 2.,  3.])
d.flatten()                 # 展开一个numpy数组为1维数组,array([1, 2, 3, 4])
np.ravel(c)               # 展开一个可以解析的结构为1维数组,array([1, 2, 3, 4])
 
# 3x3的浮点型2维数组,并且初始化所有元素值为1
e = np.ones((3, 3), dtype=np.float)
 
# 创建一个一维数组,元素值是把3重复4次,array([3, 3, 3, 3])
f = np.repeat(3, 4)
 
# 2x2x3的无符号8位整型3维数组,并且初始化所有元素值为0
g = np.zeros((2, 2, 3), dtype=np.uint8)
g.shape                    # (2, 2, 3)
h = g.astype(np.float)  # 用另一种类型表示
 
l = np.arange(10)       # 类似range,array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
m = np.linspace(0, 6, 5)# 等差数列,0到6之间5个取值,array([ 0., 1.5, 3., 4.5, 6.])
 
p = np.array(
    [[1, 2, 3, 4],
     [5, 6, 7, 8]]
)
 
np.save('p.npy', p)     # 保存到文件
q = np.load('p.npy')    # 从文件读取

 2 在Numpy中,多数函数可以指定数据类型的参数,这个参数是可选的,格式为dtype=类型名,如:

复制代码
1 a=numpy.arrange(5,dtype=int)
2 
3 >>>array([0,1,2,3,4])
4 
5 a=numpy.arrange(5,dtype=complex)
6 
7 ?

 

1 import numpy as np
2 
3 print(np.empty(3))
4 
5 print(np.empty((4,1)))

4  数组转置(可以使用transpose()函数,也可以使用T属性访问转置矩阵)

1 nar.transpose()
2 
3 nar.T


1 a=numpy.arrange(12).reshape(3,4)
2 
3 a
4 
5 array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
#此为第5点

5 Numpy中很多函数统计方法即可以当做数组的实例方法调用,也可以作为顶级的Numpy函数调用

实例使用:

1 r=a.cumsum()
2 
3 r
4 
5 array([0,1,3,6,10,15,21,28,36,45,55,66])

 

顶层函数调用:

1 r=numpy.cumsum(a)
2 r
3 
4 array([0,1,3,6,10,15,21,28,36,45,55,66])

还有比如排序

a=numpy.random.rand(4)

a.sort()等价于numpy.sort(a)

 

6 Numpy中的集合运算

a=numpy.array([1,4,2,7,9,0,1,5,7,8])

unique(a):  删除数组中的重复元素,并返回唯一元素的有序结果

intersect1d(a,b):查找a,b中的共同元素,并返回公共元素的有效结果

union1d(a,b):求a,b的并集,并返回有序结果。

in1d(a,b):返回一个布尔型数组,如果a元素包含于b,则返回TRUE,否则返回False

setdiff1d(a,b):求集合a,b的差,即存在于a中但不存在于b中的元素

setxor1d(a,b):求集合a,b的对称差。即存在于a或b但不同时存在于a,b中的元素

 

7 线性代数

numpy中的linalg模块支持常见的线性代数操作

det :求矩阵行列式

eig:求矩阵特征值和特征向量

inv:求方阵的逆

 

numpy中的常用线性代数函数

dot:完成矩阵乘法

trace:计算对角线元素的和

 

8访问文件

(1)将数组以二进制形式存取

save用于保存:numpy.save('d:\\nshz.npy',a) 若没有指定扩展名,则默认为.npy

load用于读取:numpy.load('d:\\nshz.npy')

(2)存取文本文件

savetxt():numpy.savetxt('d:\\npshz.txt',a,delimiter=',')会在D盘下新建文件‘npshz.txt’

loadtxt():numpy.loadtxt('d:\\npshz.txt',delimiter=',')

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄