numpy库的基础应用
今天我们探讨一下numpy库的基础应用,以后我们还会谈论他的进阶操作。
在此之前我们需要安装numpy库。他是python的第三方库。如果之前没有下载过,那么在使用时就需要下载numpy库:
(1)pip install numpy(这种下载方式有时候会很慢。)
(2)pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
"https://pypi.tuna.tsinghua.edu.cn/simple"为清华大学的镜像。可以使用pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 安装库名 进行快速安装
1、创建array数组的四种方法:
import numpy as np
a1 = np.array([1,2,3,4,5,6,7,8,9])#运用python列表类型创建数组
a2 = np.array((1,2,3,4,5,6,7,8,9))#运用python元组类型创建数组
a3 = np.arange(10)
a4 = np.linspace(0,2*np.pi,5)
print(a1)
[1 2 3 4 5 6 7 8 9]
print(a2)
[1 2 3 4 5 6 7 8 9]
print(a3)
[0 1 2 3 4 5 6 7 8 9]
print(a4)
[0. 1.57079633 3.14159265 4.71238898 6.28318531]
arange与python中range用法类似,都是取到0~n-1只是数据类型不同;linspace(a,b,c)是将初始值和终止值均匀分成c份,其中a为初始值,b为终止值。
2、一维、二维数组切片:
设a为数组,a[i,j]其中i为数组的行,j为数组的列(i=0,1,2…,j=0,1,2,3…),具体使用方法如下:
#一维数组
import numpy as np
a = np.array([1,2,3,4,5,6,7,8,9])#创建一个一维数组
print(a[6])#输出第一行第七列
#二维数组
b = np.array([[1,2,3,4,5,6,7,8,9],[1,4,7,8,5,2,9,6,3]])#创建一个二维数组
print(b[1,6])#输出第二行第七列
9
print(b[0,1:6])#输出b数组的第一行的2~6列---->注意不到序列6
print(b[0:,5])#输出数组的第六列
[6 2]
*注意:*创建二维数组就是中括号的括号创建三维数组就是中括号的中括号的中括号…
3、关于数组属性的函数:
import numpy as np
b = np.array([[1,2,3,4,5,6,7,8,9],[1,4,7,8,5,2,9,6,3]])#创建一个二维数组
print(type(b))#输出b的类型
<class 'numpy.ndarray'>
print(b.dtype)#对象的元素类型
int32
print(b.size)#输出对象元素的个数
18
print(b.shape)#输出矩阵的行数和列数
(2,9)#二行九列
print(b.itemsize)#输出每个项占用的字节数------>32/8
4
print(b.ndim)#输出数组的维度
2
print(a.nbytes)#输出所有数据消耗的字节数
4、数组的+ - * /
对于数组可以直接加减乘除
reshape(shape)不改变元素个数,以shape形状输出新的数组
import numpy as np
a = np.array([[1,2,3,4,5],[7,4,1,8,5],[9,6,3,0,1]])
b = np.arange(15).reshape(3,5)
print(b)
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
print(a + b)#求和,必须保证行数和列数相等。。。下同
[[ 1 3 5 7 9]
[12 10 8 16 14]
[19 17 15 13 15]]
print(a*b)
[[ 0 2 6 12 20]
[35 24 7 64 45]
[90 66 36 0 14]]
print(a-b)
[[ 1 1 1 1 1]
[ 2 -2 -6 0 -4]
[ -1 -5 -9 -13 -13]]
#除法类似
print(a<b)
[[False False False False False]
[False True True False True]
[ True True True True True]]
print(a>b)
[[ True True True True True]
[ True False False False False]
[False False False False False]]
5、数组的运算函数
设a为数组:
a.sum() 求数组所有元素的加和
a.min() /a.max() 求数组所有元素的最小值/最大值
6、where()函数:
import numpy as np
a = np.arange(10).reshape(2,5)
n =np.where(a>3)
print(n)
(array([0, 1, 1, 1, 1, 1], dtype=int64), array([4, 0, 1, 2, 3, 4], dtype=int64))#输出为符合元素的序列
7、Numpy创建特殊的数值类型:
import numpy as np
a = np.zeros((2,2))#创建一个2行2列的全零矩阵
print(a)
[[0. 0.]
[0. 0.]]
b = np.full((3,3),6)#创建一个三行三列的全6矩阵
print(b)
[[6 6 6]
[6 6 6]
[6 6 6]]
c = np.ones((4,4))#创建一个四行四列的全1矩阵
print(c)
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
d = np.eye(5)#创建一个五行五列的单位矩阵
print(d)
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
8、Broadcasting(一对多。例如QQ群:一个人发消息一群人接收)
import numpy as np
a = np.array([[1,2,3,4,5,6],[4,5,6,7,8,9]])
b = np.array([6,2,3])
c = np.ones_like(a)
print(c)
[[1 1 1 1 1 1]
[1 1 1 1 1 1]]