欢迎关注公众号【Python开发实战】, 获取更多内容!

工具-numpy

numpy是使用Python进行数据科学的基础库。numpy以一个强大的N维数组对象为中心,它还包含有用的线性代数,傅里叶变换和随机数函数。

ndarray数据

导入numpy

import numpy as np

dtype

numpy的ndarray一定程度上也是高效的,因为他们的所有元素必须是同一类型,通常是数字。可以通过查看dtype属性,检查数据类型。

c = np.arange(1, 5)
print(c.dtype, c)
输出:int32 [1 2 3 4]

除了让numpy猜测具体使用哪种数据类型,还可以在创建数组时,设置dtype参数来明确指定数据类型。

d = np.arange(1, 5, dtype=np.complex64)
print(d.dtype, d)
输出:complex64 [1.+0.j 2.+0.j 3.+0.j 4.+0.j]

可用的数据类型有int8, int16, int32, int64, uint8|16|32|64,float16|32|64,complex64|128等

itemsize

itemsize属性返回每个元素的大小(字节)

e = np.arange(1, 5, dtype=np.int64)
e.itemsize

输出:

8

数据缓冲区

一个数组的数据,实际上作为一个平面(一维)字节缓冲区存储在内存中, 它可以通过data属性来获取,但很少用到它。

f = np.array([[1, 2], [1000, 2000]], dtype=np.int32)
f.data

输出:

<memory at 0x000000000531FC18>

多个ndarray可以共享同一个数据缓冲区,这就意味着修改一个ndarray也会修改其他的ndarray。

重塑ndarray

改变ndarray的形状和设置它的形状一样简单,但是ndarray的大小必须保持不变。

g = np.arange(24)
print(g)
print("秩:", g.ndim)
输出:[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
秩: 1
g.shape = (6, 4)
print(g)
print("秩:", g.ndim)
输出:[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
秩: 2
g.shape = (2, 3, 4)
print(g)
print("秩:", g.ndim)
输出:[[[ 0  1  2  3]
[ 4 5 6 7]
[ 8 9 10 11]] [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
秩: 3

reshape

reshape函数返回一个指向相同数据的新ndarray对象,这意味着修改一个ndarray也会修改另一个ndarray。

g2 = g.reshape(4, 6)
print(g2)
print("秩:", g2.ndim)
输出:[[ 0  1  2  3  4  5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
秩: 2

将第1行,第2列的元素修改为999

g2[1, 2] = 999
g2

输出:

array([[  0,   1,   2,   3,   4,   5],
[ 6, 7, 999, 9, 10, 11],
[ 12, 13, 14, 15, 16, 17],
[ 18, 19, 20, 21, 22, 23]])

g的对应元素也被修改了

g

输出:

array([[[  0,   1,   2,   3],
[ 4, 5, 6, 7],
[999, 9, 10, 11]], [[ 12, 13, 14, 15],
[ 16, 17, 18, 19],
[ 20, 21, 22, 23]]])

ravel

ravel函数返回一个新的一维ndarray,也指向相同的数据

g3 = g.ravel()
g3

输出:

array([  0,   1,   2,   3,   4,   5,   6,   7, 999,   9,  10,  11,  12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])

将g3的第一个元素修改为1000,则g和g2的对应元素也被修改了

g3[0] = 1000
print(g3)
print(g2)
print(g)
输出:[1000    1    2    3    4    5    6    7  999    9   10   11   12   13
14 15 16 17 18 19 20 21 22 23] [[1000 1 2 3 4 5]
[ 6 7 999 9 10 11]
[ 12 13 14 15 16 17]
[ 18 19 20 21 22 23]] [[[1000 1 2 3]
[ 4 5 6 7]
[ 999 9 10 11]] [[ 12 13 14 15]
[ 16 17 18 19]
[ 20 21 22 23]]]

numpy教程02---ndarray数据和reshape重塑的更多相关文章

  1. numpy教程

    [转]CS231n课程笔记翻译:Python Numpy教程 原文链接:https://zhuanlan.zhihu.com/p/20878530 译者注:本文智能单元首发,翻译自斯坦福CS231n课 ...

  2. 【转】numpy教程

    [转载说明] 本来没有必要转载的,只是网上的版本排版不是太好,看的不舒服.所以转过来,重新排版,便于自己查看. 基础篇 NumPy的主要对象是同种元素的多维数组. 这是一个所有的元素都是一种类型.通过 ...

  3. 转:Numpy教程

    因为用到theano写函数的时候饱受数据结构困扰 于是上网找了一篇numpy教程(theano的数据类型是基于numpy的) 原文排版更好,阅读体验更佳: http://phddreamer.blog ...

  4. Python 机器学习库 NumPy 教程

    0 Numpy简单介绍 Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过numpy ...

  5. Python numpy 中常用的数据运算

    Numpy 精通面向数组编程和思维方式是成为Python科学计算大牛的一大关键步骤.——<利用Python进行数据分析> Numpy(Numerical Python)是Python科学计 ...

  6. NumPy 基于已有数据创建数组

    原文:Python Numpy 教程 章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基 ...

  7. [译]Vulkan教程(02)概况

    [译]Vulkan教程(02)概况 这是我翻译(https://vulkan-tutorial.com)上的Vulkan教程的第2篇. This chapter will start off with ...

  8. 手把手教你学Numpy,从此处理数据不再慌「一」

    当当当,我又开新坑了,这次的专题是Python机器学习中一个非常重要的工具包,也就是大名鼎鼎的numpy. 所以今天的文章是Numpy专题的第一篇. 俗话说得好,机器学习要想玩的溜,你可以不会写Pyt ...

  9. NumPy 教程目录

    NumPy 教程目录 1 Lesson1--NumPy NumPy 安装 2 Lesson2--NumPy Ndarray 对象 3 Lesson3--NumPy 数据类型 4 Lesson4--Nu ...

随机推荐

  1. 0x02 TeamViewer日志溯源

    1.环境部署 1.安装ubuntu_x64的deb安装包 2.打开TeamViewer 2.日志目录 1.通过图形应用找到日志文件 2.通过命令定位日志文件 find / -name "Te ...

  2. SQLMAP-Tamper之较为通用的双写绕过

    前言 21年省决赛的SQLITE注入就是用的双写绕过,当时是手搓代码打的,这几天想起来了,寻思着写个tamper试试. 一开始以为很简单,后来才发现有很多要注意的点,折磨了挺久. 等弄完才明白为什么s ...

  3. OpenCV使用级联分类器实现人脸检测

    一.概述 案例:使用opencv级联分类器CascadeClassifier+其提供的特征数据实现人脸检测,检测到人脸后使用红框画出来. API介绍:detectMultiScale( InputAr ...

  4. (一)【转】asp.net mvc生成验证码

    网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录.留言等提交信息到服务器端处理的页面中.   ...

  5. 羽夏笔记——Hook攻防基础

    写在前面   本笔记是由本人独自整理出来的,图片来源于网络.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你 ...

  6. Python的安装与开发环境的选用

    2021快要结束了,这一年我依旧深耕于python的广阔土壤,将重点放在机器人和传感器的角度.也收获了一大批正在学习和期望学习python的朋友. 正在学习的暂且不言,这篇主要是写给期望学习的朋友,同 ...

  7. Python 中 PyQt5 库语法(一)

    目录 PyQt5库(一) 一. 简介 1. 什么是 Qt 2. 什么是PyQt 3. 环境搭建 二. 基本结构 1. 第一个程序 2. 控件操作 3. 快速生成代码 4. 面向对象 三. 基类控件 1 ...

  8. 学习廖雪峰的git教程6--版本控制

    1git log 查看提交的版本 2git reset --hard HEAD^回退到上一个版本 3git reset --hard 版本号 回到某一个版本

  9. 二叉树,红黑树,B+树

    在实际使用时会根据链表和有序数组等数据结构的不同优势进行选择.有序数组的优势在于二分查找,链表的优势在于数据项的插入和数据项的删除.但是在有序数组中插入数据就会很慢,同样在链表中查找数据项效率就很低. ...

  10. NO Oracle database,JUST USE Oracle client。远程导入导出dmp

    序言: 你会发现,exp.exe 和imp.exe均存在于Oracle数据库的安装bin目录下.而很多情况下,我们不想安装庞大的Oracle数据库,但想使用imp和exp等工具命令,在我们本地机对Or ...