机器学习之路--Numpy
常用代码
ndarray.dtype 数据类型必须是一样的
- 常用代码
- import numpy
- #numpy读取文件
- world_alcohol = numpy.genfromtxt("world_alcohol.txt", delimiter=",", dtype=str, skip_header=1)
- #<class 'numpy.ndarray'>
- print(type(world_alcohol))
- #获取帮助信息
- print (help(numpy.genfromtxt))
- #创建一个一维数组 (4,)
- vector = numpy.array([1, 2, 3, 4])
- #创建一个矩阵 (3,3)
- matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
- #获取矩阵的行和列数
- print(matrix.shape)
- >>(3,3)
- #获取第二行第二列的值
- third_country = world_alcohol[2,2]
- #创建一个矩阵
- matrix = numpy.array([
- [5, 10, 15],
- [20, 25, 30],
- [35, 40, 45]
- ])
- #获取第一列的所有值
- print(matrix[:,1])
- >>[10 25 40]
- #获取第一行的所有值
- print(matrix[1,:])
- >>[20, 25, 30]
- #获取第0列到第二列的所有值
- print(matrix[:,0:2])
- >>[[ 5 10] [20 25] [35 40]]
- #判断是否有该数
- matrix = numpy.array([
- [5, 10, 15],
- [20, 25, 30],
- [35, 40, 45]
- ])
- #注意返回的是一个布尔值列表
- matrix == 25
- >>array([[False, False, False],
- [False, True, False],
- [False, False, False]], dtype=bool)
- #根据布尔相应条件返回值
- matrix = numpy.array([
- [5, 10, 15],
- [20, 25, 30],
- [35, 40, 45]
- ])
- second_column_25 = (matrix[:,1] == 25)
- print second_column_25
- print(matrix[second_column_25, :])
- >>[False True False]
- [[20 25 30]]
- #集合操作
- vector = numpy.array([5, 10, 15, 20])
- equal_to_ten_and_five = (vector == 10) & (vector == 5)
- print equal_to_ten_and_five
- >>[False False False False]
- vector = numpy.array([5, 10, 15, 20])
- equal_to_ten_or_five = (vector == 10) | (vector == 5)
- print equal_to_ten_or_five
- >>[ True True False False]
- vector = numpy.array([5, 10, 15, 20])
- equal_to_ten_or_five = (vector == 10) | (vector == 5)
- vector[equal_to_ten_or_five] = 50
- print(vector)
- >>[50 50 15 20]
- #dtype的 转换
- vector = numpy.array(["", "", ""])
- print (vector.dtype)
- print vector
- vector = vector.astype(float)
- print vector.dtype
- print vector
- >>|S1
- ['' '' '']
- float64
- [ 1. 2. 3.]
- #最小值
- vector = numpy.array([5, 10, 15, 20])
- vector.min()
- #求和 axis=1是按行 axis=0是按列
- matrix = numpy.array([
- [5, 10, 15],
- [20, 25, 30],
- [35, 40, 45]
- ])
- matrix.sum(axis=1)
- >>array([ 30, 75, 120])
- #小案例替换文本中的nan为0
- #原始数据
- a,b,ce,1
- ea,b4,fc,1
- a,b,c,
- a3,b3,fc,1
- ae,b2,c,
- af,b,c,1
- #replace nan value with 0
- #注意如果dtype不为float的像字符串这样就会被转为nan
- world_alcohol = numpy.genfromtxt("test.txt", delimiter=",",dtype=float)
- print (world_alcohol)
- #这里is_value_empty 返回的是一个布尔列表
- is_value_empty = numpy.isnan(world_alcohol[:,3])
- print (is_value_empty)
- #world_alcohol 里面可以加布尔列表
- world_alcohol[is_value_empty, 3] = ''
- alcohol_consumption = world_alcohol[:,3]
- alcohol_consumption = alcohol_consumption.astype(float)
- total_alcohol = alcohol_consumption.sum()
- average_alcohol = alcohol_consumption.mean()
- print (total_alcohol)
- print (average_alcohol)
- >>
- [[nan nan nan 1.]
- [nan nan nan 1.]
- [nan nan nan nan]
- [nan nan nan 1.]
- [nan nan nan nan]
- [nan nan nan 1.]]
- [False False True False True False]
- 4.0
- 0.6666666666666666
- #生成数组
- print (np.arange(15))
- a = np.arange(15).reshape(3, 5)
- a
- >>[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
- array([[ 0, 1, 2, 3, 4],
- [ 5, 6, 7, 8, 9],
- [10, 11, 12, 13, 14]])
- #获取维度
- a.ndim
- >>2
- #获取值类型
- a.dtype.name
- >>'int32'
- #生成一个全是0的矩阵
- np.zeros ((3,4))
- >>
- array([[ 0., 0., 0., 0.],
- [ 0., 0., 0., 0.],
- [ 0., 0., 0., 0.]])
- #生成两个3行4维全是1的矩阵
- np.ones( (2,3,4), dtype=np.int32 )
- >>
- array([[[1, 1, 1, 1],
- [1, 1, 1, 1],
- [1, 1, 1, 1]],
- [[1, 1, 1, 1],
- [1, 1, 1, 1],
- [1, 1, 1, 1]]])
- #生成一个10到30区间范围的 并且 以5为步长的一维矩阵
- np.arange( 10, 30, 5 )
- >>array([10, 15, 20, 25]
- #生成一个0到12区间范围的 并且 以1为步长的一维矩阵 然后在
- reshape成为4行3列的矩阵
- np.arange(12).reshape(4,3)
- >>
- array([[ 0, 1, 2],
- [ 3, 4, 5],
- [ 6, 7, 8],
- [ 9, 10, 11]])
- #随机生成一个2行3列的矩阵 里面的值是在-1到1里面取
- np.random.random((2,3))
- >>
- array([[-0.54802527, -0.13235897, -0.25751953],
- [ 0.29272435, 0.05077192, -0.31131139]])
- #均值生成的数组 前两个参数是取值范围 第三个参数是个数
- np.linspace( 0, 10, 5 )
- >>array([ 0. , 2.5, 5. , 7.5, 10. ])
- #矩阵计算1
- #The matrix product can be performed using the dot function or method
- A = np.array( [[1,1],
- [0,1]] )
- B = np.array( [[2,0],
- [3,4]] )
- print (A)
- print ('-------')
- print (B)
- print ('-------')
- #A B矩阵之间的内积
- print (A*B)
- print ('-------')
- #A B矩阵之间的乘法
- print (A.dot(B))
- print ('-------')
- print (np.dot(A, B))
- >>
- [[1 1]
- [0 1]]
- -------
- [[2 0]
- [3 4]]
- -------
- [[2 0]
- [0 4]]
- -------
- [[5 4]
- [3 4]]
- -------
- [[5 4]
- [3 4]]
- #矩阵计算2
- #the product operator * operates elementwise in NumPy arrays
- a = np.array( [20,30,40,50] )
- b = np.arange( 4 )
- print (a)
- print (b)
- #b
- c = a-b
- print (c)
- c = c -1
- print (c)
- b**2
- print (b**2)
- print (a<35)
- >>[20 30 40 50]
- [0 1 2 3]
- [20 29 38 47]
- [19 28 37 46]
- [0 1 4 9]
- [ True True False False]
- #矩阵计算3
- B = np.arange(3)
- print (B)
- #exp是ln对数
- print (np.exp(B))
- print (np.sqrt(B))
- >>[0 1 2]
- [ 1. 2.71828183 7.3890561 ]
- [ 0. 1. 1.41421356]
- #floor是向下取整 比如 np.floor(-1.5) >> -2.0
- a = np.floor(10*np.random.random((3,4)))
- print (a)
- print ('--------')
- #a.shape
- #ravel()是讲矩阵变成一维数组
- print (a.ravel())
- print ('--------')
- a.shape = (6, 2)
- print (a)
- print ('--------')
- #a.T是转置
- print (a.T)
- >>
- [[ 6. 7. 2. 9.]
- [ 6. 0. 5. 2.]
- [ 9. 0. 9. 6.]]
- --------
- [ 6. 7. 2. 9. 6. 0. 5. 2. 9. 0. 9. 6.]
- --------
- [[ 6. 7.]
- [ 2. 9.]
- [ 6. 0.]
- [ 5. 2.]
- [ 9. 0.]
- [ 9. 6.]]
- --------
- [[ 6. 2. 6. 5. 9. 9.]
- [ 7. 9. 0. 2. 0. 6.]]
- #合并
- import numpy as np
- a = np.floor(10*np.random.random((2,2)))
- b = np.floor(10*np.random.random((2,2)))
- print (a)
- print ('---')
- print (b)
- print ('---')
- #垂直合并
- print (np.vstack((a,b)))
- #水平合并
- #np.hstack((a,b))
- >>
- [[ 3. 7.]
- [ 2. 6.]]
- ---
- [[ 9. 6.]
- [ 0. 7.]]
- ---
- [[ 3. 7.]
- [ 2. 6.]
- [ 9. 6.]
- [ 0. 7.]]
- #切分
- a = np.floor(10*np.random.random((2,12)))
- print (a)
- print ('---')
- #hsplit按列切分第一个参数是要切分的数据集
- # 第二个参数是要平均的切分几份
- print (np.hsplit(a,3))
- print ('---')
- #里面(3,4)是指在第3列和第四列切开
- print (np.hsplit(a,(3,4))) # Split a after the third and the fourth column
- a = np.floor(10*np.random.random((12,2)))
- print ('---')
- print (a)
- np.vsplit(a,3)
- >>
- [[ 8. 3. 3. 5. 9. 0. 1. 1. 6. 2. 7. 2.]
- [ 7. 1. 9. 7. 5. 2. 5. 7. 0. 3. 1. 1.]]
- ---
- [array([[ 8., 3., 3., 5.],
- [ 7., 1., 9., 7.]]), array([[ 9., 0., 1., 1.],
- [ 5., 2., 5., 7.]]), array([[ 6., 2., 7., 2.],
- [ 0., 3., 1., 1.]])]
- ---
- [array([[ 8., 3., 3.],
- [ 7., 1., 9.]]), array([[ 5.],
- [ 7.]]), array([[ 9., 0., 1., 1., 6., 2., 7., 2.],
- [ 5., 2., 5., 7., 0., 3., 1., 1.]])]
- ---
- [[ 8. 1.]
- [ 3. 2.]
- [ 8. 0.]
- [ 9. 0.]
- [ 9. 0.]
- [ 5. 3.]
- [ 3. 3.]
- [ 7. 2.]
- [ 5. 7.]
- [ 9. 6.]
- [ 4. 0.]
- [ 8. 4.]]
- [array([[ 8., 1.],
- [ 3., 2.],
- [ 8., 0.],
- [ 9., 0.]]), array([[ 9., 0.],
- [ 5., 3.],
- [ 3., 3.],
- [ 7., 2.]]), array([[ 5., 7.],
- [ 9., 6.],
- [ 4., 0.],
- [ 8., 4.]])]
- #Python深浅拷贝
- https://www.cnblogs.com/echoboy/p/9059183.html
- = 数据完全共享
- b=[1,2,['a','b']]
- a=b
- 浅拷贝 数据半共享(复制其数据独立内存存放,但是只拷贝成功第一层)
- a=b.copy()
- 深拷贝 数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享)
- import copy
- a=copy.deepcopy(b)
机器学习之路--Numpy的更多相关文章
- Python:机器学习三剑客之 NumPy
一.numpy简介 Numpy是高性能科学计算和数据分析的基础包,机器学习三剑客之一.Numpy库中最核心的部分是ndarray 对象,它封装了同构数据类型的n维数组.部分功能如下: ndarray, ...
- 机器学习三剑客之Numpy库基本操作
NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...
- Numpy 机器学习三剑客之Numpy
NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...
- 机器学习之路:python 集成回归模型 随机森林回归RandomForestRegressor 极端随机森林回归ExtraTreesRegressor GradientBoostingRegressor回归 预测波士顿房价
python3 学习机器学习api 使用了三种集成回归模型 git: https://github.com/linyi0604/MachineLearning 代码: from sklearn.dat ...
- 机器学习之路:python k近邻回归 预测波士顿房价
python3 学习机器学习api 使用两种k近邻回归模型 分别是 平均k近邻回归 和 距离加权k近邻回归 进行预测 git: https://github.com/linyi0604/Machine ...
- 机器学习之路:python线性回归分类器 LogisticRegression SGDClassifier 进行良恶性肿瘤分类预测
使用python3 学习了线性回归的api 分别使用逻辑斯蒂回归 和 随机参数估计回归 对良恶性肿瘤进行预测 我把数据集下载到了本地,可以来我的git下载源代码和数据集:https://gith ...
- 机器学习三剑客之Numpy
Numpy NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效 ...
- 《机器学习实战》---NumPy
NumPy库函数基础: 机器学习算法涉及很多线性代数知识. NumPy库中有很多线性代数计算. 之所以用到线性代数只是为了简化不同的数据点上执行的相同数学运算.将数据表示为矩阵形式, 只需要执行简单的 ...
- Python之路-numpy模块
这里是首先需要安装好Anaconda Anaconda的安装参考Python之路-初识python及环境搭建并测试 配置好环境之后开始使用Jupyter Notebook 1.打开cmd,输入 jup ...
随机推荐
- mysql数据库之windows版本
安装 第一步:打开网址,http://www.mysql.com.点击downloads之后跳转到http://www.mysql.com/downloads/选择Community选项 第二步:按 ...
- 正则 ?<= 和 ?= 用法 以及零宽断言等概念
正则 ?<= 和 ?= 用法 参考网址:http://baike.baidu.com/link?url=2zORJF9GOjU8AkmuHDLz9cyl9yiL68PdW3frayzLwW ...
- BERT大火却不懂Transformer?读这一篇就够了 原版 可视化机器学习 可视化神经网络 可视化深度学习
https://jalammar.github.io/illustrated-transformer/ The Illustrated Transformer Discussions: Hacker ...
- SuperSocket新的配置属性 "defaultCulture"
这个新增的功能只支持 .Net framework 4.5 及其以上版本. 它允许你设置所有线程的默认Culture, 不管这些线程是如何创建,通过代码或者来自于线程池. 这个新的配置属性 " ...
- HMM——维特比算法(Viterbi algorithm)
1. 前言维特比算法针对HMM第三个问题,即解码或者预测问题,寻找最可能的隐藏状态序列: 对于一个特殊的隐马尔可夫模型(HMM)及一个相应的观察序列,找到生成此序列最可能的隐藏状态序列. 也就是说给定 ...
- HDU 1596 也是最小路径Dijkstra
#include<cstdio> #include<cmath> #include<cstring> +; double dist[qq]; double city ...
- uni-app学习记录04-轮播图和滑屏图片
<template> <view> <!-- 轮播图视图 swiper-item是每页的元素 --> <swiper :indicator-dots=&quo ...
- 如何让索引只能被一个SQL使用
有个徒弟问我,要创建一个索引,去优化一个SQL,但是创建了索引之后其他 SQL 也要用 这个索引,其他SQL慢死了,要优化的SQL又快.遇到这种问题咋搞? 一般遇到这种问题还是很少的.处理的方法很多. ...
- JPA批量操作及性能比对
假设需要批量插入10000条实体数据至数据库.如下是各个操作方法及耗时 环境Spring boot 1.JDBC(JdbcTemplate) pom.xml <dependency> &l ...
- H3C 链路聚合分类