Numpy 基础

参考https://www.jianshu.com/p/83c8ef18a1e8

  1. import numpy as np

简单创建数组

  1. # 创建简单列表
  2. a = [1, 2, 3, 4]
  3. # 将列表转换为数组
  4. b = np.array(a)
  5. print(a, "\t", b)
  6. print("\n数组元素个数:\t",b.size)
  7. print("数组形状:\t", b.shape)
  8. print("数组维度:\t", b.ndim)
  9. print("数组元素类型:\t", b.dtype)

[1, 2, 3, 4] [1 2 3 4]

数组元素个数: 4

数组形状: (4,)

数组维度: 1

数组元素类型: int32

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

  1. # 创建10行10列的数值为浮点1的矩阵
  2. array_one = np.ones([5, 5])
  3. # 创建10行10列的数值为浮点0的矩阵
  4. array_zero = np.zeros([5, 5])

从现有的数据创建数组:

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

创建随机数组

  • 均匀分布

    • 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))

数组的索引、切片

  1. # 正态生成4行5列的二维数组
  2. arr = np.random.normal(1.75, 0.1, (4, 5))
  3. print(arr)
  4. # 截取第1至2行的第2至3列(从第0行算起)
  5. after_arr = arr[1:3, 2:4]
  6. print(after_arr)
  1. [[1.70402304 1.6514506 1.63572257 1.81760737 1.91454784]
  2. [1.65294415 1.82911738 1.78747379 1.82805398 1.76698167]
  3. [1.91056499 1.86022006 1.89047126 1.62899365 1.88996188]
  4. [1.77414812 1.630505 1.81022207 1.78061747 1.65964094]]
  5. [[1.78747379 1.82805398]
  6. [1.89047126 1.62899365]]

改变数组形状(要求前后元素个数匹配)

  1. print("reshape函数的使用!")
  2. one_20 = np.ones([20])
  3. print("-->1行20列<--")
  4. print (one_20)
  5. one_4_5 = one_20.reshape([4, 5])
  6. print("-->4行5列<--")
  7. print (one_4_5)
  1. reshape函数的使用!
  2. -->120列<--
  3. [1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
  4. -->45列<--
  5. [[1. 1. 1. 1. 1.]
  6. [1. 1. 1. 1. 1.]
  7. [1. 1. 1. 1. 1.]
  8. [1. 1. 1. 1. 1.]]

Numpy 计算

条件运算

  1. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  2. stus_score > 80
  1. array([[False, True],
  2. [ True, True],
  3. [ True, False],
  4. [ True, True],
  5. [False, True]])
  1. # 三目运算。 小于80的替换为0,不小于80的替换为90
  2. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  3. np.where(stus_score < 80, 0, 90)
  1. array([[90, 90],
  2. [90, 90],
  3. [90, 0],
  4. [90, 90],
  5. [ 0, 90]])

统计运算

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

  1. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  2. # 求每一列的最大值(0表示列)
  3. print("每一列的最大值为:")
  4. result = np.amax(stus_score, axis=0)
  5. print(result)
  6. print("每一行的最大值为:")
  7. result = np.amax(stus_score, axis=1)
  8. print(result)
  1. 每一列的最大值为:
  2. [86 88]
  3. 每一行的最大值为:
  4. [88 82 84 86 81]

指定轴最小值amin

  1. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  2. # 求每一行的最小值(0表示列)
  3. print("每一列的最小值为:")
  4. result = np.amin(stus_score, axis=0)
  5. print(result)
  6. # 求每一行的最小值(1表示行)
  7. print("每一行的最小值为:")
  8. result = np.amin(stus_score, axis=1)
  9. print(result)
  1. 每一列的最小值为:
  2. [75 75]
  3. 每一行的最小值为:
  4. [80 81 75 83 75]

指定轴平均值mean

  1. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  2. # 求每一行的平均值(0表示列)
  3. print("每一列的平均值:")
  4. result = np.mean(stus_score, axis=0)
  5. print(result)
  6. # 求每一行的平均值(1表示行)
  7. print("每一行的平均值:")
  8. result = np.mean(stus_score, axis=1)
  9. print(result)
  1. 每一列的平均值:
  2. [81.4 81.6]
  3. 每一行的平均值:
  4. [84. 81.5 79.5 84.5 78. ]

方差std

  1. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  2. # 求每一行的方差(0表示列)
  3. print("每一列的方差:")
  4. result = np.std(stus_score, axis=0)
  5. print(result)
  6. # 求每一行的方差(1表示行)
  7. print("每一行的方差:")
  8. result = np.std(stus_score, axis=1)
  9. print(result)
  1. 每一列的方差:
  2. [3.77359245 4.1761226 ]
  3. 每一行的方差:
  4. [4. 0.5 4.5 1.5 3. ]

数组运算

  1. stus_score = np.array([[80, 88], [82, 81], [84, 75], [86, 83], [75, 81]])
  2. print("加分前:")
  3. print(stus_score)
  4. # 为所有平时成绩都加5分
  5. stus_score[:, 0] = stus_score[:, 0]+5
  6. print("加分后:")
  7. print(stus_score)
  8. # 加减乘除类似
  1. 加分前:
  2. [[80 88]
  3. [82 81]
  4. [84 75]
  5. [86 83]
  6. [75 81]]
  7. 加分后:
  8. [[85 88]
  9. [87 81]
  10. [89 75]
  11. [91 83]
  12. [80 81]]

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

  • 计算规则

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

Numpy 基础的更多相关文章

  1. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  2. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...

  3. 利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  4. numpy 基础操作

    Numpy 基础操作¶ 以numpy的基本数据例子来学习numpy基本数据处理方法 主要内容有: 创建数组 数组维度转换 数据选区和切片 数组数据计算 随机数 数据合并 数据统计计算 In [1]: ...

  5. [转]python与numpy基础

    来源于:https://github.com/HanXiaoyang/python-and-numpy-tutorial/blob/master/python-numpy-tutorial.ipynb ...

  6. python学习笔记(三):numpy基础

    Counter函数可以对列表中数据进行统计每一个有多少种 most_common(10)可以提取前十位 from collections import Counter a = ['q','q','w' ...

  7. Numpy基础数据结构 python

    Numpy基础数据结构 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的元数据 1.一维数组 import numpy as np ar = np.a ...

  8. Python Numpy基础教程

    Python Numpy基础教程 本文是一个关于Python numpy的基础学习教程,其中,Python版本为Python 3.x 什么是Numpy Numpy = Numerical + Pyth ...

  9. NumPy基础操作

    NumPy基础操作(1) (注:记得在文件开头导入import numpy as np) 目录: 数组的创建 强制类型转换与切片 布尔型索引 结语 数组的创建 相关函数 np.array(), np. ...

随机推荐

  1. 使用java操作elasticsearch(1)

    1.安装elasticsearch 这儿用的是5.6.9的版本,下载安装过程较为简单,在官网上下载好后解压到文件夹.需要注意的是在elasticsearch-5.6.9\config下的elastic ...

  2. 利用dladdr来获得so自身的路径

    #include <dlfcn.h> //定义该函数为了dladdr获取符号信息 void fun1() { } Dl_info info; //dladdr获取某个地址的符号信息 int ...

  3. DAX/PowerBI系列 - 关于时间系列 - 时间相关数值比较 - 用非自带函数

    DAX/PowerBI系列 - 关于时间系列 - 时间相关数值比较 - 用非自带函数 文末有彩蛋,解决蛋疼问题 难度: ★★☆☆☆(2星) 适用范围: ★★★☆☆(3星) 概况: 基于时间的汇总可能是 ...

  4. Oracle 11g R2性能优化 tkprof

    另一篇博文总结了关于SQL TRACE工具的使用方式,但是产生的trace文件格式阅读起来并不是十分友好,为了更好的分析trace文件,Oracle也自带了一个格式化工具tkprof.tkprof工具 ...

  5. 再次聊一聊promise settimeout asycn awiat执行顺序---js执行机制 EVENT LOOP

    首先js是单线程 分为同步和异步,异步又分为(macrotask 宏任务 和 microtask微任务 ), 这图还是很清晰嘛,再来一张 总结一下,就是遇到同步先执行同步,异步的丢到一边依次排队,先排 ...

  6. 用原生js+canvas实现五子棋

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. ABP 2.0.2 升到 2.2.1

    1.选择解决方案 右键 管理 nuget 更新 输入abp 这里只升级 abp的包 点升级 2.update-database  可能需要你添加个迁移(这一步可能不需要) 3.Core 项目下面的Au ...

  8. ASP.NET MVC案例教程(六)

    ASP.NET六 一个小难题 我们继续完善“MVC公告发布系统”,这次,我们的需求是对公告发布功能添加日志记录能力,即在发布公告前,记录一次,在公告发布成功后,再记录一次.然后还要使得其具备异常处理, ...

  9. Java类型信息之RTTI

    软件工程的一个核心问题就是软件的复用和扩展.面向对象思想通过封装,继承,派生等机制有效地解决了这个问题.但需求总是变幻莫测,不可琢磨,在面向对象这栋恢宏的大厦旁,还漂浮着一朵乌云,从而导致了RTTI的 ...

  10. 网络-02-端口号-linux端口详解大全

    端口详解 1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器  2 compressnet Management Utility compr ...