今天开始进行对numpy库的学习为了以后使用python进行机器学习开辟道路
为了方便在文档开头可以
import numpy as np
1.numpy生成数组:array函数
这个函数实际上是
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
想一想要存储一个数组我们需要知道内容有哪些?
首先是需要一个带数字的列表也就是object
其次是数据类型dtype,当数字过大的时候我们想要把数据存储为什么形式的在有些情况下需要告诉计算机
剩下的ndmin表示的是最小维度也,也就是最小希望生成多少维的数组。
arr = np.array([1,2,3,4,5,6]) #一维数组
arr = np.array([[1,2,3],[4,5,6],[7,8,9]]) #生成二维数组
2.numpy访问数组中的元素
arr = np.array([1,2,3,4,5,6]) #一维数组
a1 = arr[0] #访问数组中的第一个元素
a2 = arr[0:3] #访问数组中从下标为0开始往后数3个,返回的还是一个一维数组
arr = np.array([[1,2,3],[3,4,5]]) #二维数组
a1 = arr[0] #访问二维数组中的第一行,返回的是一个一维数组
a2 = arr[0:3] #访问二维数组中前三个元素,返回的是一个二维数组
3. 访问数组的属性
dim = np.ndim(arr) #数组的维度,一维数组就是1二维数组就是2
(n,m) = np.shape(arr) #数组的形状,比如数组是个3*4的矩阵那么就返回(3,4)
size = np.size(arr) #数组中的元素总数,正好也可以用来求一维数组的长度
4.初始化一个数组
arr = np.empty([3,4],dtype = int) #生成一个3*4的数组,如果后面的dtype不设置的话默认为浮点数,注意这样初始化的数组中的元素的值是不确定的
arr = np.zeros(5) #生成一个长度为5的全是0的数组
arr = np.ones(5) #生成一个长度为5的全是1的数组
5.从已有的数组上生成数组asarray
a = (1,2,3)
arr = np.asarray(a) #将一个已知的元组上建立一个数组
6.从数值范围创建数组
arr = np.arange(5) #将会生成[0,1,2,3,4]
arr = np.arange(10,20,2) #将会生成[10,12,14,16,18]注意这里并没有20
arr = np.linspace(1,10,10) #意思是从1开始到10结束线性生成10个数[1,2,3,4,5,6,7,8,9,10]
arr = np.logspace(1,10,num = 10) #意思是默认以10为底数指数范围为1到10生成10个数[10,10^2,...10^10]
arr = np.logspace(1,10,base = 3,num = 10) #意思是以3为底,指数范围1到10生成10个数[ 3 9 27 81 243 729 2187 6561 19683 59049]
7.数组的拷贝
简单的赋值并不会生成新的存储地址,所以为了不影响父本的值我们需要调用numpy的copy函数来完成赋值的工作。
arr = np.array([1,2,3,4,5])
arr1 = arr #对arr1进行操作的时候,访问的其实都是arr的值,因此,修改arr1会影响arr
arr1 = arr.copy() #对arr进行拷贝,生成了新的数组,这样得到的数组arr1是新的数组,对其进行操作不会影响arr的值
8.修改数组的形状
如果我们想把一个一维数组变成一个二维数组我们可以调用reshape函数来帮助我们实现
a = np.array([1,2,3,4,5,6,7,8])
a.reshape(2,4)
#输出结果为[[1,2,3,4]
# [5,6,7,8]]