numpy模块

一、Numpy是什么?

Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。如果接触过matlab、scilab,那么numpy很好入手

二、numpy的一些方法:

使用之前安装好numpy模块

1、创建一维、二维数组:

import numpy as np
arr = np.array([1,2,3,4]) # 创建一维数组
arr1 = np.array([[1,2,3,4],[5,6,7,8],[7,8,9,10]]) # 创建二维数组
print(arr)
print(arr1)

运行结果:

numpy模块

2、查看数组的属性

numpy模块

(1)查看维数 ndim

# 查看数组维度  ndim
print(arr.ndim)  # 1
print(arr1.ndim)  # 2

(2)查看数组的结构:shape

最终结果以元组形式显示 表示几行几列

# 查看数组结构 shape
print(arr.shape)
print(arr1.shape)
# 可以通过给数组结构重新赋值从而改变数组结构
arr1.shape = 4,3
print(arr1)

运行结果:

numpy模块

(3)查看元素类型 dtype

# 查看数组元素数据类型
print(arr.dtype)
print(arr1.dtype)

运行结果: (int32表示为int类型数据,在系统中占4个字节,32个比特位,可存储对应的十进制数的范围为-2^31~2^31-1)

numpy模块

3、专门用来构造数组的一些函数

 

(1)arange函数

与重用的range函数类似,但是arrange创建的是数组类型,而range函数在python2中创建的是一个list列表类型,在python3是range类型,一个可迭代的对象

用法:

arange(起始值,终止值,步长)注意:取不到终止值

arr3 = np.arange(0,1,0.1)
print(arr3)
arr4 = np.arange(1,10,1)
print(arr4)
print(type(arr3),type(arr4))
print(type(range(1,4,1)))
for i,j in zip(arr3,range(1,4,1)):
    print(i,j)

运行结果:

numpy模块

(2)构造等差数列的数组 linspace

用法:linspace(起始值,终止值,元素个数) 注意;可以取到终止值,其中元素默认是浮点数类型

arr5 = np.linspace(1,10,10) # 包含终止值
print(arr5)
for i in arr5:
    print(i,'元素类型是:',type(i))

运行结果:

numpy模块

(3)构造等比数列的数组 

logspace(起始指数,终止指数,元素个数) 

 注意:起始值,终止值都是指数,默认底数为base = 10

包含终止值,元素是浮点数类型

arr6 = np.logspace(0,2,3)
print(arr6)

运行结果:

numpy模块

(4)构造全0数组: zeros

zeros([(2,3)]) 注意:传入的是元组类型的参数

arr7 = np.zeros([3,4])
print(arr7)

运行结果:

numpy模块

(5)构造全1数组:ones

ones([(2,3)]) 注意:传入的是元组类型的参数

arr8 = np.ones([3,4])
print(arr8)

运行结果:

numpy模块

(6)构造单位数组:方阵 eye

print(np.eye(4))

运行结果:

numpy模块

(7)构造对角数组(方阵)diag

print(np.diag([1,2,3,4]))

运行结果:

numpy模块

4、生成随机数

(1)0到1范围内的数组成的 一维数组 np.random.random() 

print(np.random.random(10))

运行结果:

numpy模块

(2)生成服从正态分布的随机数  np.random.randn()

print(np.random.randn(3,4))

运行结果:

numpy模块

(3)生成指定范围内的整数:np.random.randint()

print(np.random.randint(1,10,size=[3,4]))

运行结果:

numpy模块

(4)均匀分布:生成0到1之间的随机数 np.random.rand()

print(np.random.rand(3,4))

运行结果:

numpy模块

5、数组的索引

(1)一维数组的索引

arr = np.arange(10) # 生成一维数组
print(arr)
print(arr[0])
print(arr[::2])   #取所有偶数索引项
print(arr[1::2])  #去所有奇数索引项

运行结果:

numpy模块

(2)二维数组的索引

# 二维数组索引
arr2 = np.array([[1,2,3,4],[5,6,7,8],[9,8,7,6]])
print(arr2)
print(arr2.shape)  # 数组的结构
print(arr2[1,0])   # 取得是5 2行1列
print(arr2[0,2:4]) #取得是[3,4] 第一行第三列到第四列
print(arr2[0:2,1:3]) # 2,3 6,7  取得是第一行和第二行的第二列和第三列
print(arr2[1])     #取得是第二行的所有值 [5 6 7 8]
print(arr2[1,:])   #取得是第二行的所有值 [5 6 7 8]
print(arr2[1:3,1:4])  # 取得是第一行和第二行的第2,3,4列
print(arr2[(1,2),(1,3)])  #[6 6] 第二行第二列 和 第三行第四列

运行结果:

numpy模块