numpy教程02---ndarray数据和reshape重塑
欢迎关注公众号【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重塑的更多相关文章
- numpy教程
[转]CS231n课程笔记翻译:Python Numpy教程 原文链接:https://zhuanlan.zhihu.com/p/20878530 译者注:本文智能单元首发,翻译自斯坦福CS231n课 ...
- 【转】numpy教程
[转载说明] 本来没有必要转载的,只是网上的版本排版不是太好,看的不舒服.所以转过来,重新排版,便于自己查看. 基础篇 NumPy的主要对象是同种元素的多维数组. 这是一个所有的元素都是一种类型.通过 ...
- 转:Numpy教程
因为用到theano写函数的时候饱受数据结构困扰 于是上网找了一篇numpy教程(theano的数据类型是基于numpy的) 原文排版更好,阅读体验更佳: http://phddreamer.blog ...
- Python 机器学习库 NumPy 教程
0 Numpy简单介绍 Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过numpy ...
- Python numpy 中常用的数据运算
Numpy 精通面向数组编程和思维方式是成为Python科学计算大牛的一大关键步骤.——<利用Python进行数据分析> Numpy(Numerical Python)是Python科学计 ...
- NumPy 基于已有数据创建数组
原文:Python Numpy 教程 章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基 ...
- [译]Vulkan教程(02)概况
[译]Vulkan教程(02)概况 这是我翻译(https://vulkan-tutorial.com)上的Vulkan教程的第2篇. This chapter will start off with ...
- 手把手教你学Numpy,从此处理数据不再慌「一」
当当当,我又开新坑了,这次的专题是Python机器学习中一个非常重要的工具包,也就是大名鼎鼎的numpy. 所以今天的文章是Numpy专题的第一篇. 俗话说得好,机器学习要想玩的溜,你可以不会写Pyt ...
- NumPy 教程目录
NumPy 教程目录 1 Lesson1--NumPy NumPy 安装 2 Lesson2--NumPy Ndarray 对象 3 Lesson3--NumPy 数据类型 4 Lesson4--Nu ...
随机推荐
- 【漏洞复现】Paraluni 安全事件分析及复现
Paraluni 被黑分析 前言 Paraluni (平行宇宙)是新加坡 Parallel Universe 基金会发布的一个 基于币安智能链的 DeFi 项目,更多相关内容见此处.在 2022 年 ...
- 理解并手写 bind() 函数
有了对call().apply()的前提分析,相信bind()我们也可以手到擒来. 参考前两篇:'对call()函数的分析' 和 '对apply()函数的分析',我们可以先得到以下代码: Functi ...
- Java:基于AOP的动态数据源切换(附源码)
1 动态数据源的必要性 我们知道,物理服务机的CPU.内存.存储空间.连接数等资源都是有限的,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈.而在复杂的互联网业务场景下,系统流量日益膨 ...
- 论如何在使用RedisStandaloneConfiguration时让JedisConnectionFactory用上JedisPoolConfig
前言 公司项目上线后经常运行一两天后就会出现延时.无响应的情况,当时第一反应觉得可能是某些业务优化不行,检查业务也没发现有什么问题,前前后后倒是修了两三个BUG,本以为没啥事儿了,但也就好了两天,很奇 ...
- 用注册表清除Office Word文档杀手病毒
不久前,笔者打开word文件时遇到了一件离奇的怪事,常用的Word文件怎么也打不开,总是出现提示框:"版本冲突:无法打开高版本的word文档".再仔细查看,文件夹里竟然有两个名字一 ...
- Eclipse阿里云镜像源配置
镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 一.什么是Eclipse Eclipse 是一个开放源代码的.基于 Java 的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过 ...
- web服务器-nginx负载均衡
web服务器-nginx负载均衡 一 负载均衡的作用 负载均衡: 分摊到多个操作单元上进行执行,和它的英文名称很匹配.就是我们需要一个调度者,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整 ...
- 6月20日 Django中ORM介绍和字段、字段参数、相关操作
一.Django中ORM介绍和字段及字段参数 二.Django ORM 常用字段和参数 三.Django ORM执行原生SQL.在Python脚本中调用Django环境.Django终端打印SQL语句 ...
- 4月26日 python学习总结 JoinableQueue、线程、三种锁
一.进程队列补充-创建进程队列的另一个类JoinableQueue JoinableQueue同样通过multiprocessing使用. 创建队列的另外一个类: JoinableQueue([max ...
- 使用MEF应用IOC(依赖倒置)
MVC实用架构设计(二)--使用MEF应用IOC(依赖倒置) 前言 在<上篇>中,基本的项目结构已经搭建起来了,但是有个问题,层与层之间虽然使用了接口进行隔离,但实例化接口的时候,还引 ...