机器学习之路--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 ...
随机推荐
- BZOJ 1935 Tree 园丁的烦恼 CDQ分治/主席树
CDQ分治版本 我们把询问拆成四个前缀和,也就是二维前缀和的表达式, 我们把所有操作放入一个序列中 操作1代表在x,y出现一个树 操作2代表加上在x,y内部树的个数 操作3代表减去在x,y内部树的个数 ...
- macOS上搭建RabbitMQ+MQTT服务器
1. 下载RabbitMQhttps://www.rabbitmq.com/install-standalone-mac.html或通过brew直接安装RabbitMQ brew install ra ...
- Linux下的一些配置
/etc/vim/vimrc文件 set cindent set expandtab set smartindent set autoindent set nu set hls taglist安装(t ...
- laravel 中使用tinker注入数据到数据库
- [转]Jmeter压力测试工具安装及使用教程
一.Jmeter下载 进入官网:http://jmeter.apache.org/ 1.第一步进入官网如下图 2.选择进行下载,下载下来为一个压缩包,解压即可. 3.我下载的是jmeter4.0版本, ...
- java接口和抽象类的比较
相同点: 都位于继承的顶端,用于被其他实现或继承; 都不能实例化; 都包含抽象方法,其子类都必须覆写这些抽象方法; 区别: 抽象类为部分方法提供实现,避免子类重复实现这些方法,提供代码重用性;接口 ...
- C# 在 8.0 对比 string 和 string? 的类型
在 C# 8.0 的时候提供了可空字符串的判断,但是可空字符串和字符串的类型是不是不同的? 打开 VisualStudio 2019 这时就不能再使用 VisualStudio 2017 因为不支持 ...
- springBoot中“MockMvc”的进行Controller进行单元测试:application/octet-stream' not supported问题小结
解决方案:这个问题其实是Content-type的问题,只需要在相关的代码加入相关Content-type中就可以了,代码如下: mockMvc.perform(post("/user&qu ...
- H3C创建本地用户
[H3C]Local-user wang //创建本地用户--对应上面scheme的 [H3C-luser-wang]Password cipher 456 ...
- 2018-2-13-win10-uwp-异步进度条
title author date CreateTime categories win10 uwp 异步进度条 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17 ...