参考链接: Python中的numpy.radians和deg2rad

一、numpy模块

 1.1 numpy 简介

 numpy是python的一种开源的数值计算扩展库,这种库可用来存储和处理大型numpy数组。

 numpy库有两个作用:

 ​1、区别于list列表,提供了数组操作、数组运算、以及统计分布和简单的数学模型

 ​2、计算速度快,甚至要优于python内置的简单运算,使得其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似。

 1.2 创建numpy数组

 numpy数组即numpy的ndarray对象,创建numpy数组就是把一个列表传入np.array()方法

 import numpy as np

 # 创建一维的ndarray对象

 arr =np.array([1,2,3])

 print(arr,type(arr)) # [1 2 3] 

 # 创建二维的ndarray对象

 print(np.array([[1,2,3],[4,5,6]]))

 --------------------------------------------------------------------------------

 [[1 2 3]

 [4 5 6]]

 1.3 numpy数组的常用属性

 属性

 解释

 T

 数组的转置(对高维数组而言)

 dtype

 数组元素的数据类型

 size

 数组元素的个数

 ndim

 数组的维数

 shape

 数组的维度大小(以元组形式)

 astype

 类型转换

 arr = np.array([[1,2,3],[4,5,6]])

 print(arr.T) # 行与列互换

 --------------------------------------------------------------------------------

 [[1 4]

 [2 5]

 [3 6]]

 1.4 切片

 arr = np .array([[1,2,3],[4,5,6]])

 print(arr[:]) # 取出数组所有元素

 print(arr[:,:]) # 取出数组所有元素

 print(arr[0,:]) # 取出第0行到第一行的数组

 print(arr[0:1,:]) # 取出第0行到第一行的数组,顾头不顾尾

 print(arr[0:1,0:1]) # 取出第0行到第一行,第0列到第一列的数组,顾头不顾尾

 print(arr[0, 0],type(arr[0, 0])) #取出第0行到第一行,第0列到第一列的数,输出数组类型

 print(arr[0, [0,2]]) #取出第0行第0个元素和第2个元素 [1 3]

 print(arr[0, 0] + 1) #取出第0行第0列的元素加1 2

 1.5 取值

 arr = np.array([[1, 2, 3], [4, 5, 6]])

 arr[0, :] = 0 #将第0行的元素全部变为0

 print(arr)

 --------------------------------------------

 [[0 0 0]

 [4 5 6]]

 arr[1, 1] = 1 #将第一行第一列的数字改为1

 print(arr)

 --------------------------------------------------------------------------------

 [[0 0 0]

 [4 1 6]]

 arr[arr < 3] = 3 # 布尔取值 将小于3的数字全部变为3

 print(arr)

 --------------------------------------------------------------------------------

 [[3 3 3]

 [4 3 6]]

 1.6 合并

 arr1 = np.array([[1, 2, 3], [4, 5, 6]]) # 可变数据类型

 arr2 = np.array([[7, 8, 9], [10, 11, 12]]) # 可变数据类型

 -------------------------------------------------------

 [[1 2 3]

 [4 5 6]]

 [[ 7 8 9]

 [10 11 12]]

 print(np.hstack((arr1,arr2))) # 行合并

 ------------------------------------------------------------

 [[ 1 2 3 7 8 9]

 [ 4 5 6 10 11 12]]

 print(np.vstack((arr1,arr2))) # 列合并

 ------------------------------------------------

 [[ 1 2 3]

 [ 4 5 6]

 [ 7 8 9]

 [10 11 12]]

 print(np.concatenate((arr1, arr2))) # 默认列合并

 print(np.concatenate((arr1, arr2),axis=1)) # 1表示行;0表示列

 -----------------------------------------------------------

 [[ 1 2 3]

 [ 4 5 6]

 [ 7 8 9]

 [10 11 12]]

 [[ 1 2 3 7 8 9]

 [ 4 5 6 10 11 12]]

 1.7 通过函数创建numpy数组

 方法

 详解

 array()

 将列表转换为数组,可选择显式指定dtype

 arange()

 range的numpy版,支持浮点数

 linspace()

 类似arange(),第三个参数为数组长度

 zeros()

 根据指定形状和dtype创建全0数组 np.zeros((5, 5))

 ones()

 根据指定形状和dtype创建全1数组 np.ones((5, 5))

 eye()

 创建单位矩阵(对角线上的 数字为1)

 empty()

 创建一个元素全随机的数组

 reshape()

 重塑形状

 1.7 numpy数组运算

 运算符

 说明

 +

 两个numpy数组对应元素相加

 -

 两个numpy数组对应元素相减

 *

 两个numpy数组对应元素相乘

 /

 两个numpy数组对应元素相除,如果都是整数则取商

 %

 两个numpy数组对应元素相除后取余数

 **n

 单个numpy数组每个元素都取n次方,如**2:每个元素都取平方

 1.9 额外了解

 numpy随机数

 print(np.random.rand(3,4)) #随机生成一个3*4的数组

 print(np.random.randint(1,10,(3,4))) # 最小值1,最大值10,3*4

 print(np.random.choice([1,2,3,4,5],3)) #随机生成一个元素为3个的数组,数组元素在[1,2,3,4,5]内

 重点

 随机数种子:所有的随机数是按照随机数种子生成的

 时间短则不变,时间长就变

 np.random.seed(int(time.time()))

 np.random.seed(1) #如果固定了就不会变

 arr1 = np.random.rand(3,4) # 可变数据类型

 print(arr1)

 rs = np.random.RandomState(1) #产生一个随机状态种子,seed为1

 print(rs.rand(3,4))

 ---------------------------------------------------------

 [[4.17022005e-01 7.20324493e-01 1.14374817e-04 3.02332573e-01]

 [1.46755891e-01 9.23385948e-02 1.86260211e-01 3.45560727e-01]

 [3.96767474e-01 5.38816734e-01 4.19194514e-01 6.85219500e-01]]

 二、pandas模块

 1、导入方式

 import pandas as pd

 2、作用

 用于文件处理,更多地是给excel文件做处理,对numpy+xlrd模块做了一层封装

 3、pandas模块的数据类型

 3.1 series()

 现在一般不使用(一维)

 df = pd.series(np.array([1,2,3,4]))

 print(df)

 3.2 DataFrame() (多维)

 3.2.1

 dates = pd.date_range('20190101', periods=6, freq='M')

 print(dates) # periods=6, freq='M'代表前六个月

 start

 开始时间

 end

 结束时间

 periods

 时间长度

 freq

 时间频率,默认为'D',可选H(our),W(eek),B(usiness),S(emi-)M(onth),(min)T(es), S(econd), A(year),…

 3.2.2 属性

 属性

 详解

 dtype是

 查看数据类型

 index

 查看行序列或者索引

 columns

 查看各列的标签

 values

 查看数据框内的数据,也即不含表头索引的数据

 describe

 查看数据每一列的极值,均值,中位数,只可用于数值型数据

 transpose

 转置,也可用T来操作

 sort_index

 排序,可按行或列index排序输出

 sort_values

 按数据值来排序

 3.2.3 取值

 #构造一个数组

 dates = pd.date_range('20190101', periods=6, freq='M')

 print(dates)

 values = np.random.rand(6, 4) * 10

 print(values)

 columns = ['c4','c2','c3','c1']

 #主要掌握

 df.values[1,1] #取出第一行第一列

 df.iloc[1,1] = 1 #取出第一行第一列,替换为1

 3.2.4 操作表格

 1、缺失值处理

 df = df.dropna(axis = 0) #按行删除缺失值

 df

 df = df.dropna(tresh = 4) #必须得有4个值,写5就不可以,因为只有4列

 df = df.dropna(axis=0) # 1列,0行

 df #按行取缺失值

 2、合并处理数据

 df1 = pd.DataFrame(np.zeros((2,3))) #用0合并两行三列

 df2 = pd.DataFrame(np.ones((2,3))) #用1合并两行三列

 pd.concat((df1,df2)) #默认按列合并

 pd.concat((df1,df2),axis=1) axis=1是行,0是列

 df1.append(df2) #往后追加

 导入数据,读取json文件菜鸟仅做了解

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐