01numpty numpy.array 基础
#!/usr/bin/env python
# coding: utf-8
# In[1]:
# numpy引入
import numpy
# In[2]:
# 查看版本
numpy.__version__
# ### python List特点
# 1,比较灵活同时效率也会低:不对类型做限制,list中可以是数字、字符串、Boolean类型
# In[3]:
L = [i for i in range(10)]
L
# In[4]:
L[5] = "字符串"
L[6] = bool(False)
L[7] = bool(True)
L
# ### array.array 其中类型会有限制,只能是字符类型或数字/数组类型
# 没有相应的向量运算
# In[5]:
import array
arr = array.array('i', [i for i in range(10)])
arr
# In[6]:
arr[0]
# ### numpy.array
# 创建数组:nparr = np.array([i for i in range(10)])
# nparr.dtype:返回数组类型,数组一旦定义再赋值其他值会转换
# In[7]:
import numpy as np
nparr = np.array([i for i in range(10)])
nparr
# In[8]:
# 返回类型长度
nparr.dtype
# In[9]:
# 赋值为浮点数,自动转换为int
nparr[1] = 3.14
print(nparr)
nparr.dtype
# In[10]:
# 浮点类型,输入整数会转为浮点类型
nparr2 = np.array([0,1,3.0])
print(nparr2)
nparr2.dtype
# ### 其他创建数组的方法
# 创建0数组,默认为浮点类型,也可传入数据类型
# npzeros = np.zeros(10)
# 传入元组,传入类型,生成三行三列数组/矩阵
# npzeros = np.zeros((3,3), dtype=int)
#
# 生成全为1的数组/矩阵
# npones = np.ones(10)
#
# 创建指定值矩阵
# npfull = np.full((3, 5), 666)
#
# 也可以指明具体,默认为int
# npfull = np.full(shape=(5,5), fill_value=555)
# In[11]:
# 创建0数组,默认为浮点类型,也可传入数据类型
npzeros = np.zeros(10)
print(npzeros)
npzeros.dtype
# In[12]:
# 传入元组,传入类型,生成三行三列数组
npzeros = np.zeros((3,3), dtype=int)
print(npzeros)
# In[13]:
# 生成全为1的数组
npones = np.ones(10)
print(npones)
npones1 = np.ones((5,5), dtype=int)
print(npones1)
# In[14]:
# 创建指定值矩阵
npfull = np.full((3, 5), 666)
print(npfull)
# In[15]:
# 也可以指明具体
npfull = np.full(shape=(5,5), fill_value=555)
print(npfull)
# 注明参数可以反转
npfull1 = np.full(fill_value=55.5, shape=(5,5))
print(npfull1)
# ### arange
# range() 步长不能为小数 range(0,20,2)
# arange()步长可以为小数 np.arange(0,1,0.2)
# In[16]:
[i for i in range(0,20,2)]
# In[17]:
[i for i in np.arange(0,1,0.2)]
# ### linspace
# np.linspace(start, end, len) 其中包括start和end点平均截成len段,即前闭后闭
#
# In[18]:
[np.linspace(0, 20, 11)]
# ### random
# 生成随机数,前闭后开,第三个参数为生成个数
# np.random.randint(4,8,size=10) 更加清楚明了
# 设置随机种子,随机数生成相同
# In[19]:
nprandom = np.random.randint(0, 10, 10)
nprandom1 = np.random.randint(4,8,size=10)
print(nprandom)
print(nprandom1)
# In[20]:
# 设置随机种子,随机数生成相同
nprandom = np.random.seed(123)
nprandom = np.random.rand(10)
print(nprandom)
nprandom11= np.random.rand(10)
print(nprandom11)
# In[21]:
# 生成符合正态分布的随机数,均值为0,方差为1
np.random.normal()
# 可以指定均值方差,均值为10方差为100
np.random.normal(10,100)
# 生成均值为0方差为1的随机元组(5*5)
np.random.normal(0, 1, (5, 5))
# In[ ]:
# In[22]:
120+210+210+150+90+150+30+30+150+210+30+30+30+30+240+210+60
1980/30
1980+1890+1980
常用方法 创建数组
- np.arange(start,end, 步长) 创建一个连续数组
- np.ones(shape, dtype=数据类型) 创建一个全为1的数组
- np.zeros(shape, dtype) 创建全0数组
- np.eye(shape) 创建单位矩阵
- np.linspace(start, stop, num=数字个数) 创建一个等差数列(不是前闭后开,包括stop)
- np.logspace(start, stop,num=数字个数, base=倍数) 创建一个等比数列,stop表示base的stop次方
np.asarray() 浅复制一个数组
数组运算
- 切片a[0:3],二维数组切片 a[0:2,1:3],取第一列数组 a[:, 0]
- 改变数组形状:np.reshape(shape)返回一个新数组原数组不改变、np.resize(shape) 直接改变原数组。reshape(-1,2) 表示2列 行数根据数组情况
- numpy.sum(arr,axios=0) 计算数组和,传入axis计算不同维度数组和,0表示行,1表示列,2表示三维
- numpy.prod() 计算所有元素的乘积
- numpy.diff() 计算相邻元素的差
- nuimpy.sqrt() 计算各元素的平方根
- numpy,exp() 计算各元素的指数
- numpy.abs() 取各元素的绝对值
- np.stack(arr1, arr2, axis=) 数组堆叠,将两个一维数组堆叠为二维数组,axis指定堆叠方向
矩阵和随机数
- 矩阵运算-矩阵相乘 arr1*arr2 (直接用 * )
- 矩阵转置 arr.T
- 矩阵求逆 arr.I