Numpy

NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!

Numpy简单创建数组

import numpy as np
# 创建简单的列表
a = [1, 2, 3, 4]
# 将列表转换为数组
b = np.array(b)

Numpy查看数组属性

数组元素个数

b.size

数组形状

b.shape

数组维度

b.ndim

数组元素类型

b.dtype

快速创建N维数组的api函数

  • 创建10行10列的数值为浮点1的矩阵
array_one = np.ones([10, 10])
  • 创建10行10列的数值为浮点0的矩阵
array_zero = np.zeros([10, 10])
  • 从现有的数据创建数组

    • array(深拷贝)
    • asarray(浅拷贝)

Numpy创建随机数组np.random

  • 均匀分布

    • np.random.rand(10, 10)创建指定形状(示例为10行10列)的数组(范围在0至1之间)
    • np.random.uniform(0, 100)创建指定范围内的一个数
    • np.random.randint(0, 100) 创建指定范围内的一个整数
  • 正态分布

    给定均值/标准差/维度的正态分布np.random.normal(1.75, 0.1, (2, 3))

  • 数组的索引, 切片
# 正态生成4行5列的二维数组
arr = np.random.normal(1.75, 0.1, (4, 5))
print(arr)
# 截取第1至2行的第2至3列(从第0行算起)
after_arr = arr[1:3, 2:4]
print(after_arr)
 
数组索引
  • 改变数组形状(要求前后元素个数匹配)
 
改变数组形状
print("reshape函数的使用!")
one_20 = np.ones([20])
print("-->1行20列<--")
print (one_20) one_4_5 = one_20.reshape([4, 5])
print("-->4行5列<--")
print (one_4_5)

Numpy计算(重要)

条件运算

 
原始数据
 
条件判断
import numpy as np
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
stus_score > 80
 
三目运算
import numpy as np
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
np.where(stus_score < 80, 0, 90)

统计运算

  • 指定轴最大值amax(参数1: 数组; 参数2: axis=0/1; 0表示列1表示行)

 
求最大值
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
# 求每一列的最大值(0表示列)
print("每一列的最大值为:")
result = np.amax(stus_score, axis=0)
print(result) print("每一行的最大值为:")
result = np.amax(stus_score, axis=1)
print(result)
  • 指定轴最小值amin

 
求最小值
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
# 求每一行的最小值(0表示列)
print("每一列的最小值为:")
result = np.amin(stus_score, axis=0)
print(result) # 求每一行的最小值(1表示行)
print("每一行的最小值为:")
result = np.amin(stus_score, axis=1)
print(result)
  • 指定轴平均值mean

 
求平均值
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
# 求每一行的平均值(0表示列)
print("每一列的平均值:")
result = np.mean(stus_score, axis=0)
print(result) # 求每一行的平均值(1表示行)
print("每一行的平均值:")
result = np.mean(stus_score, axis=1)
print(result)
  • 方差std

 
求方差
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
# 求每一行的方差(0表示列)
print("每一列的方差:")
result = np.std(stus_score, axis=0)
print(result) # 求每一行的方差(1表示行)
print("每一行的方差:")
result = np.std(stus_score, axis=1)
print(result)

数组运算

  • 数组与数的运算

 
加法
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
print("加分前:")
print(stus_score) # 为所有平时成绩都加5分
stus_score[:, 0] = stus_score[:, 0]+5
print("加分后:")
print(stus_score)
 
乘法
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
print("减半前:")
print(stus_score) # 平时成绩减半
stus_score[:, 0] = stus_score[:, 0]*0.5
print("减半后:")
print(stus_score)
  • 数组间也支持加减乘除运算,但基本用不到

 
image.png
a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])
c = a + b
d = a - b
e = a * b
f = a / b
print("a+b为", c)
print("a-b为", d)
print("a*b为", e)
print("a/b为", f)

矩阵运算np.dot()(非常重要)

 
根据权重计算成绩
  • 计算规则

(M行, N列) * (N行, Z列) = (M行, Z列)

 
矩阵计算总成绩
stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
# 平时成绩占40% 期末成绩占60%, 计算结果
q = np.array([[0.4], [0.6]])
result = np.dot(stus_score, q)
print("最终结果为:")
print(result)
  • 矩阵拼接
    • 矩阵垂直拼接
 
垂直拼接
print("v1为:")
v1 = [[0, 1, 2, 3, 4, 5],
[6, 7, 8, 9, 10, 11]]
print(v1)
print("v2为:")
v2 = [[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]]
print(v2)
# 垂直拼接
result = np.vstack((v1, v2))
print("v1和v2垂直拼接的结果为")
print(result)
  • 矩阵水平拼接
 
水平拼接
print("v1为:")
v1 = [[0, 1, 2, 3, 4, 5],
[6, 7, 8, 9, 10, 11]]
print(v1)
print("v2为:")
v2 = [[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]]
print(v2)
# 垂直拼接
result = np.hstack((v1, v2))
print("v1和v2水平拼接的结果为")
print(result)

Numpy读取数据np.genfromtxt

 
csv文件以逗号分隔数据
 
读取csv格式的文件

如果数值据有无法识别的值出现,会以nan显示,nan相当于np.nan,为float类型.

机器学习三剑客之Numpy的更多相关文章

  1. Python:机器学习三剑客之 NumPy

    一.numpy简介 Numpy是高性能科学计算和数据分析的基础包,机器学习三剑客之一.Numpy库中最核心的部分是ndarray 对象,它封装了同构数据类型的n维数组.部分功能如下: ndarray, ...

  2. 机器学习三剑客之Numpy库基本操作

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  3. Numpy 机器学习三剑客之Numpy

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  4. 机器学习 三剑客 之 pandas + numpy

    机器学习 什么是机器学习? 机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测 机器学习存在的目的和价值领域? 领域: 医疗.航空.教育.物流.电商 等... 目的: 让机器学习 ...

  5. 数据分析三剑客之numpy

    Numpy 简介 数据分析三剑客:Numpy,Pandas,Matplotlib NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算, ...

  6. python数据分析三剑客之: Numpy

    数据分析三剑客之: Numpy 一丶Numpy的使用 ​ numpy 是Python语言的一个扩展程序库,支持大维度的数组和矩阵运算.也支持针对数组运算提供大量的数学函数库 创建ndarray # 1 ...

  7. 《机器学习实战》---NumPy

    NumPy库函数基础: 机器学习算法涉及很多线性代数知识. NumPy库中有很多线性代数计算. 之所以用到线性代数只是为了简化不同的数据点上执行的相同数学运算.将数据表示为矩阵形式, 只需要执行简单的 ...

  8. 【机器学习】--Python机器学习库之Numpy

    一.前述 NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵. NumPy包含很多实用的数学函数,涵盖线性代数运算.傅 ...

  9. python 机器学习三剑客 之 Matplotlib

    Matplotlib介绍: Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 . 通过 Matplotlib,开发者可以仅需要几 ...

随机推荐

  1. 1603 限高二叉排列树(计数DP)

    1603 限高二叉排列树 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题   作为游戏魔方的编写者和管理员,Bob在很多主存模块中 ...

  2. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 4)

    (四)栏/字段 SharePoint中的字段(中文版中叫做"栏")与传统的数据栏类似,也有不同类型的区别,不过SharePoint中内置的栏类型除了按照数据类型(如数字.日期和时间 ...

  3. RTLabel 富文本

    本节关于RTLable基本介绍,原文来自 https://github.com/honcheng/RTLabel RTLabel 基于富文本的格式,适用于iOS,类似HTML的标记. RTLabel ...

  4. Vue父组件调用子组件的方法

    vue中如果父组件想调用子组件的方法,可以在子组件中加上ref,然后通过this.$refs.ref.method调用,例如: 父组件: <template> <div @click ...

  5. shadow批量破解

    john有个参数可以设置破解时间,比如破解5秒则设置:--max-run-time=5,可以利用这个参数批量破解 for i in *;do (echo $i>>out;john --ma ...

  6. linux安装jdk_1.8

    转载自http://blog.csdn.net/ldl22847/article/details/7605650 1.下载jdk的rpm安装包,这里以jdk-8u141-linux-x64.rpm为例 ...

  7. mac安装yarn , MAC升级Nodejs

    Npm i -g yarn 第一步,先查看本机node.js版本: `$ node -v` 第二步,清除node.js的cache: `$ sudo npm cache clean -f` 第三步,安 ...

  8. Symfony 一些介绍

    Symfony 一些介绍: 路由:能限制 hostname,这就让有大量公共功能的网站可以共用一套代码:URI 识别支持 Reg 检测,让 url 能定义的随心所欲:支持前缀,import,便于模块化 ...

  9. django路由系统之反向生成url

    from niubin.service import v1 from django.urls import reverse from django.shortcuts import HttpRespo ...

  10. 对称加密&非对称加密

    对称密钥密码算法的特点: 算法简单,加/解密速度快,但密钥管理复杂,不便于数字签名: 非对称密钥密码算法的特点: 算法复杂,加/解密速度慢,密钥管理简单,可用于数字签名. 所以将两者结合起来,形成混合 ...