机器学习入门之机器学习实战--第一章 Numpy使用
小标 2018-10-22 来源 : 阅读 1563 评论 0

摘要:本文主要向大家介绍了机器学习入门之机器学习实战--第一章 Numpy使用,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

本文主要向大家介绍了机器学习入门之机器学习实战--第一章 Numpy使用,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助。

导入numpy 并简单赋值


import numpy as np

a = np.array([0, 1, 2, 3, 4, 5])
print a
# 数组转换到2D矩阵 变成三行两列
b = a.reshape((3, 2))
print b
# .ndim(空间维度的意思)即矩阵列数
print a.ndim
print b.ndim
# .shape查看矩阵形态,即几行几列
print b.shape# numpy避免复制操作 直接修改值,a,b的值都变化
b[1][0] = 77print b, a# 结果为
# [[ 0 1]# [77  3]# [ 4  5]] [ 0  1 77  3  4  5]
# 需要一个复本,使用.copy(),这里c和a是完全独立的副本
c = a.reshape((3, 2)).copy()c[0][0] = 99print c

对数组操作的传递

a=np.array([1,2,3,4,5])
# 对数组操作的传递
print a*2
print a**2
# [  0   2  4   6   8  10]
# [   0    1  4    9   16   25]

# python list集的操作
print [1,2,3,4,5]*2
print [1,2,3,4,5]**2
# [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
# TypeError: unsupported operand type(s) for ** or pow(): ‘list‘ and ‘int‘

numpy的索引

# 将数组本身作为数组索引使用
# 显示数组a的第2,3,4个值
print a[np.array([2, 3, 4])]
# [77,3,4]
# 判断条件传递到每一个参数
print a>4
# [False False  True False False  True]
# 存储判断结果
print a[a>4]
# [77  5]
# 修剪异常值,大于4的值置为4
a[a>4] = 4
print a
# [0 1 4 3 4 4]

专门的修剪函数

# clip修剪,将超出边界的值用边界替代
a = np.array([11,22,33,1,2,3,-1])
print a.clip(0, 4)
# [4 4 4 1 2 3 0]

处理不存在的值
对于包含的不合法的值,使用numpy.NAN做标记

# 模拟一个数据
c = np.array([1, 2, np.NAN, 4, 5, 6, 7])
print c
# [  1.   2.  nan   4.   5.   6.   7.]
# 注意后面有个.号

判断是否是无效值

print np.isnan(c)
# [False False  True False False False False]
# 注意这个方法的调用


# 筛选有效数据
print c[~np.isnan(c)]

# mean 求算数平均值,axis是轴 0算是x轴 1算是y轴 考虑x=1 y=2;x=3 y=4
>>> a = np.array([[1, 2], [3, 4]])
>>> np.mean(a)
2.5
>>> np.mean(a, axis=0)
array([ 2.,  3.])
>>> np.mean(a, axis=1)
array([ 1.5,  3.5])

运行时间比较

normal_py_src = timeit.timeit(‘sum(x*x for x in xrange(1000))‘, number=10000)
native_np_src = timeit.timeit(‘sum(na*na)‘, setup="import numpy as np; na=np.arange(10000)",
                              number=10000)
good_np_src = timeit.timeit(‘na.dot(na)‘, setup="import numpy as np; na=np.arange(10000)",
                              number=10000)

print("normal python:%f sec"%normal_py_src)
print("Naive Numpy:%f sec"%native_np_src)
print("Good py:%f sec"%good_np_src)

#normal python:0.820022 sec
#Naive Numpy:52.690701 sec
#Good py:0.098299 sec

python 中访问个体数组元素是相当耗时的

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能机器学习频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved