ref:link

why numpy

  • 运算高效

numpy 内存结构

  • 一块内存区域
  • dtype 确定了内存区域数据类型
  • metadata 比如 shapestrides 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. 集合-LinkedList 源码分析(JDK 1.8)

    1.概述 LinkedList 是 Java 集合框架中一个重要的实现,其底层采用的双向链表结构.和 ArrayList 一样,LinkedList 也支持空值和重复值.由于 LinkedList 基 ...

  2. 任意Exe转ShellCode?

    之前写过一个远控,但一直在琢磨如何生成shellcode,今天偶然看见一个项目:sRDI,github上就有 这个项目主要就是将dll转成shellcode,于是我就想到了"写一个输出文件的 ...

  3. 重磅!AWS升级对Apache Hudi的集成

    全球最大云厂商AWS的 Athena 团队又更新了 Athena 与 Apache Hudi 的集成,以支持新功能及最新的 0.8.0 社区版本.早在Apache Hudi还处于孵化阶段时,AWS A ...

  4. Flask快速入门day02(1、CBV使用及源码分析,2、模板用法,3、请求与响应的基本用法,4、session的使用及源码分析,5、闪现,6、请求扩展)

    目录 Flask框架 一.CBV分析 1.CBV编写视图类方法 二.CBV源码分析 1.CBV源码问题 2.补充问题 3.总结 三.模板 1.py文件 2.html页面 四.请求与响应 1.reque ...

  5. [大数据]Hadoop HDFS文件系统命令集

    基本格式: hadoop fs -cmd [args] 1 Query 显示命令的帮助信息 # hadoop fs -help [cmd] 查看hadoop/hdfs的用户 # hdfs dfs -l ...

  6. tcp,udp tcp三次握手四次挥手,基于套接字进行简单通信

    1.应用层: 应用层功能:规定应用程序的数据格式. 例:TCP协议可以为各种各样的程序传递数据,比如Email.WWW.FTP等等.那么,必须有不同协议规定电子邮件.网页.FTP数据的格式,这些应用程 ...

  7. Java设计模式 —— 外观模式

    13 外观模式 13.1 外观模式概述 Facade Pattern: 为子系统的接口提供一组统一的入口.外观模式定义了一个高层接口,这个接口使得子系统的更加容易使用. 在外观模式中,一个子系统的外部 ...

  8. SMBMS超市管理系统(Javaweb项目)

    SMBMS超市管理系统(Javaweb项目) 项目环境 jdk 1.8.0_261 mysql 8.0.21 IDEA 2021.2.2 项目架构 数据库 项目源代码 filer 字符编码过滤器 pa ...

  9. COIG:开源四类中文指令语料库

    CHINESE OPEN INSTRUCTION GENERALIST: A PRELIMINARY RELEASE 论文:https://arxiv.org/pdf/2304.07987v1.pdf ...

  10. 程序猿要chatpgpt干掉了?

    如何拥抱被chatpgpt拉开的人工智能大时代 昨天 chatgpt-4 发布了.我看到好多技术圈的人都惶恐着,以后咱们都要失业了/(ㄒoㄒ)/~~ 和之前差不多的是毫无意外地又引动了一大波舆论.虽然 ...