ref:link

why numpy

  • 运算高效

numpy 内存结构

  • 一块内存区域
  • dtype 确定了内存区域数据类型
  • metadata 比如 shape、strides etc

注:numpy 内存占用和 C 基本相同,多了常数内存消耗

numpy 广播机制

自动将常数变为可以参与运算的形式

  • 无需对常数变成可以进行运算的大小(自动)

注意:

  • 广播机制是逻辑上的参与运算,并没有创建相应的矩阵(向量)

indexing

数组切片

[::k] k 是步长

import numpy as np
x = np.arange(6).reshape(2,3)
'''
x=[[0,1,2],
[3,4,5]]
'''
x[:,::2]
'''
[[0, 2],
[3, 5]]
'''
x[::2,::2]
'''
array([[0, 2]])
'''
x[:,::-1]
'''
array([[2, 1, 0],
[5, 4, 3]])
'''
x[::-1,::-1]
'''
array([[5, 4, 3],
[2, 1, 0]])
'''

简单的index 返回的是原数组的一个view,而非copy

x[::-1,::-1]
'''
array([[5, 4, 3],
[2, 1, 0]])
'''
>>> x[::-1,::-1][1][1]=120
>>> x
array([[ 0, 120, 2],
[ 3, 4, 5]]) >>> c =x[::-1,::-1]
>>> c[0][0]=123
>>> x
array([[ 0, 1, 2],
[ 3, 4, 123]])

fancy indexing

fancy index 返回值 通常是一个 copy。

  • mask

    >>> x = np.arange(6).reshape(2,3)
    >>> x
    array([[0, 1, 2],
    [3, 4, 5]]) >>> mask = x%2==0
    >>> mask
    array([[ True, False, True],
    [False, True, False]], dtype=bool
    >>> x[mask]
    array([0, 2, 4])
    ## 测试返回的是copy 而不是 view
    >>> x[mask][0]=122
    >>> x
    array([[0, 1, 2],
    [3, 4, 5]])
  • 通过index选择

    >>> x = np.arange(6)
    >>> x
    array([[0, 1, 2, 3, 4, 5]])
    >>> indices =[1,2,-1,1]
    >>> x[indices]
    array([1, 2, 5, 1])

【翻译】高效numpy指北的更多相关文章

  1. Python 简单入门指北(一)

    Python 简单入门指北(一) Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫.但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑 ...

  2. Celery入门指北

    Celery入门指北 其实本文就是我看完Celery的官方文档指南的读书笔记.然后由于我的懒,只看完了那些入门指南,原文地址:First Steps with Celery,Next Steps,Us ...

  3. [转] iOS开发者的Weex伪最佳实践指北

    [From] http://www.cocoachina.com/ios/20170601/19404.html 引子 这篇文章是笔者近期关于Weex在iOS端的一些研究和实践心得,和大家一起分享分享 ...

  4. Markdown 标记语言指北 - 源码

    这是上一篇博客的源代码. 这是班刊约稿的一篇文章. 全文约6000字, 预计需要 60 分钟读完. # Markdown 标记语言指北 #### TOC 1. [什么是 Markdown?](#%E4 ...

  5. Markdown 标记语言指北

    这是班刊约稿的一篇文章. 全文约6000字, 预计需要 60 分钟读完. Markdown 标记语言指北 TOC 什么是 Markdown? Markdown 可以用来干什么? 第一步? 一些专业一点 ...

  6. [常用工具] Python视频解码库DeFFcode使用指北

    DeFFcode是一种跨平台的高性能视频帧解码器,通过内部封装ffmpeg,提供GPU解码支持,几行python代码就能够快速解码视频帧,并具有强大的错误处理能力.DeFFcode的APIs支持多种媒 ...

  7. git宝典—应付日常工作使用足够的指北手册

    最近公司gitlab又迁移,一堆git的命令骚操作,然鹅git命令,感觉还是得复习下——其实,git现在界面操作工具蛮多,比如intellij 自带的git操作插件就不错,gitlab github ...

  8. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

  9. 可能比文档还详细--VueRouter完全指北

    可能比文档还详细--VueRouter完全指北 前言 关于标题,应该算不上是标题党,因为内容真的很多很长很全面.主要是在官网的基础上又详细总结,举例了很多东西.确保所有新人都能理解!所以实际上很多东西 ...

  10. 关于supervisor的入门指北

    关于supervisor的入门指北 在目前这个时间点(2017/07/25),supervisor还是仅支持python2,所以我们要用版本管理pyenv来隔离环境. pyenv 根据官方文档的讲解, ...

随机推荐

  1. LeetCode刷题笔记 - 2022

    这篇博客集中整理在LeetCode的刷题记录,方便查阅 258. 各位相加 - 力扣(LeetCode) (leetcode-cn.com) 代码 class Solution { public: i ...

  2. RFM客户分类模型的应用——R语言

    RFM模型是衡量客户价值和客户创造利益能力的重要工具和手段.在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的.该机械模型通过一个客户的近期购买行为.购买的总体频率以及花了多少钱3项 ...

  3. HTTP协议初见

    HTTP协议 四大特性 基于请求端响应 ​ 客户端发送请求,服务端才响应,服务端不会主动给客户端发送响应. 基于TCP/IP作用于应用层之上的协议 ​ 此协议属于应用层 无状态 ​ 服务端不会保存客户 ...

  4. SpringBoot2 简明教程

    1.环境配置: ●Java 8 & 兼容java14 .●Maven 3.3+●idea 2019.1.2 maven的settings.xml配置 <mirrors> <m ...

  5. 部署:mysql搭建多主一从源复制环境

    问题描述:搭建过一主多从的环境,由于数据库数据一致性要求高,有些情景会搭建一主多从的架构,搭建多主一从的模式,相对来说适合数据整合,将多个业务的库整合到一起,方便做查询,也可以当做一个监控其他主库数据 ...

  6. odoo 开发入门教程系列-继承(Inheritance)

    继承(Inheritance) Odoo的一个强大方面是它的模块化.模块专用于业务需求,但模块也可以相互交互.这对于扩展现有模块的功能非常有用.例如,在我们的房地产场景中,我们希望在常规用户视图中直接 ...

  7. Gin框架快速入门

    github地址: https://github.com/gin-gonic/gin 初体验 安装: $ go get -u github.com/gin-gonic/gin 简单实例: packag ...

  8. OpenCv人脸检测技术-(实现抖音特效-给人脸戴上墨镜)

    OpenCv人脸检测技术-(实现抖音特效-给人脸戴上墨镜) 本文章用的是Python库里的OpenCv. OpenCv相关函数说明 import cv2 # 导入OpenCv库 cv2.imread( ...

  9. input输入框输入组合的限制

    1 输入大小写字母.数字.下划线: 2 <input type="text" οnkeyup="this.value=this.value.replace(/[^\ ...

  10. office办公套件基础教程

    正文 1.网页端的应用-office全家桶 这里我选择先聊web端的应用,首先,我们来想象一下,只要你有网络,有浏览器,就能打开一个网页,在网页上进行编辑.处理一些word.报表.ppt等,你不需要复 ...