机器学习实战--第一章 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 中访问个体数组元素是相当耗时的

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

时间: 2024-11-08 21:11:50

机器学习实战--第一章 Numpy使用的相关文章

机器学习实战——第一章

分类:将实例数据划分到合适的分类中.目标变量是离散型. 回归:预测数值型数据.目标变量是连续型的数值. 监督学习:必须知道预测什么,即目标变量的分类信息.目标变量是机器学习算法的预测结果. 开发机器学习应用程序的步骤:1)收集数据:2)准备输入数据:3)分析输入数据:4)训练算法:5)测试算法:6)使用算法. 1 from numpy import * #将numpy函数库中的所有模块引入当前命名空间 2 random.rand(4,4) #构造4*4的随机数组array 3 randMat =

2017.2.20 activiti实战--第一章--认识Activiti

学习资料:<Activiti实战> 第一章 认识Activiti 内容概览:讲解activiti的特点.接口概览.架构等基本信息. 1.3 Activiti的特点 1.使用mybatis 2.原生支持spring,可以轻松集成spring 3.引擎的Service接口 Activiti引擎提供了7大Service接口,均通过processEngine获取,支持链式API风格. Service接口 作用 RepositoryService 流程仓库服务,管理流程仓库,比如部署.删除.读取流程资源

OSGI实战第一章

第一章         解开OSGI的面纱 OSGI是什么?是Java平台的一个模块化层. 模块化:软件应用程序的代码被分割为表示独立内容的逻辑单元,可简化开发,可通过强化逻辑模块的界限来提高可维护性. Java模块化的不足 a)         Java使用访问修饰符(如public.protected.private和包级私有),解决底层面向对象封装,而不是逻辑系统划分. 比如,如果需要代码在多个包之间课件,那么包内的代码必须声明为public,那么所有的模块都可以使用这个public类.这

核心系统命令实战 第一章Linux命令行简介

第一章Linux命令行简介 1.1 Linux命令行概述 1.1.1 Linux 命令行的开启和退出 开启:登陆账号密码进入系统 退出:exit/logout  快捷键:Ctrl+d 1.1.2 Linux命令行提示符介绍 (1)提示符由PS1环境变量控制.实例代码如下: [[email protected] ~]# set | grep PS1 PS1='[\[email protected]\h \W]\$ ' 这里的PS1='[\[email protected]\h \W]\$ ',可以

DirectX12 3D 游戏开发与实战第一章内容

DirectX12 3D 第一章内容 学习目标 1.学习向量在几何学和数学中的表示方法 2.了解向量的运算定义以及它在几何学中的应用 3.熟悉DirectXMath库中与向量有关的类和方法 1.1 向量 向量是一种兼具大小和方向的量,具有这两种的量都称为向量值物理量,在几何学中我们一般用一条有向线段来表示一个向量 1.1.1 向量与坐标系 前提:计算机无法直接处理以几何方法表示的向量,所以需要寻求一种用数学方法来表示向量 在这里我们会引入一种3D空间坐标系,通过平移操作使向量的尾部位于原点,然后

机器学习实战——第二章

k-近邻算法(kNN):测量不同特征值之间的距离方法进行分类. kNN的工作原理:存在一个样本数据集合(训练样本集),并且样本集中每个数据都存在标签,输入没有标签的新数据后,将新数据的每个特征与样本集数据对应的特征进行比较,然后算法提取样本集中特征最相似数据的分类标签.一般来说,只选择样本数据集中前k个最相似的数据. 伪代码: 1)计算已知类别数据集中的点与当前点之间的距离: 2)按照距离递增次序排序: 3)选取与当前点距离最小的k个点: 4)确定前k个点所在类别的出现频率: 5)返回前k个点出

机器学习实战第二章----KNN

tile的使用方法 tile(A,n)的功能是把A数组重复n次(可以在列方向,也可以在行方向) argsort()函数 argsort()函数返回的是数组中值从大到小的索引值 dict.get()函数 语法:dict.get(key, default=None) key----字典中要查找的键 default----如果指定的简直不存在时,返回该默认值 add_subplot()基础用法 import matplotlib.pyplot as plt from numpy import * fi

机器学习实战-第二章代码+注释-KNN

#-*- coding:utf-8 -*- #https://blog.csdn.net/fenfenmiao/article/details/52165472 from numpy import * #科学计算包 import operator #运算符模块 import matplotlib import matplotlib.pyplot as plt #matplotlib.pyplot是一些命令行风格函数的集合 from os import listdir #列出给定目录的文件名 de

第一章 numpy入门

目录 1.1 numpy数据类型 1.2 numpy数组基础 1.2.1 数组的属性 1.2.2 数组的索引:获取单个元素 1.2.3 数组切片:获取子数组 1.2.4 数组的变形 1.2.5 数组的拼接和分裂 === 1.1 numpy数据类型 1.2 numpy数组基础 1.2.1 数组的属性 import numpy as np np.random.seed(0) x1 = np.random.randint(10,size=6) x2 = np.random.randint(10,siz