ndarray数据类型及转换
ndarray数据类型
Ndarray的基本数据类型如下图所示,数据类型的命名采用“类型名+数字”的形式表示,数字表示数据的比特位长。在计算机中比特位bit是表示数据最小的单位,1个字节Byte的长度等于8个比特位,即1Byte = 8bit。int64表示8个字节长度的整型,float64表示为8个字节长度的双精度浮点型。同样类型的元素在内存中或磁盘中占的空间是一样的,因此在处理海量数据时,如果数据类型设置不合理,会导致内存或磁盘存储空间的浪费,并影响计算效率。但对于初学者而言,暂时不需要关注每种类型的长度,只需要知道ndarray中有整数型、浮点型、字符串型、布尔型、对象型。
Ndarray数据类型转换
ndarray与Python列表的最大的不同就是列表可以存入不同数据类型的元素,而ndarray要求所有元素的数据类型必须一致。Numpy会自动识别ndarray中的数据类型,如果数据类型不一致Numpy会将所有元素自动转换成一个合适的数据类型。
上图中先后创建了3个ndarray对象,arr1由3个整数组成,arr2将arr1中的第2个元素由整数型改为浮点型,为保证同一种数据类型,Numpy会将arr2中其它元素都转换成浮点型,arr3将arr2中的第3个元素改为字符串类型,同样Numpy会自动将其它元素转换成字符串型。整数型-->浮点型-->字符串型可以自动转换,如果把顺序颠倒过来不能自动转换,因为可能会造成数据的损失,我们可以使用astype( )函数手动强制转换。astype( )函数的原理是首先将原数组在内存中进行复制,数据类型转换的操作是在复制的数组里进行,不会对原数组造成影响。
注意上图中将arr4由浮点型转换成整数型时,每个元素的小数位都被自动截掉,实际应用中可能影响数据质量;只有当所有字符串元素都表示整数型或浮点型时,才能使用astype( )函数将字符转型转换成整数型或浮点型,否则会报ValueError错误;直接把arr6转换成整数型也会报错。
ndarray元素访问
ndarray可以用索引来访问元素,一维数组的索引访问方式与Python的list相同,多维数组只需要在索引中增加位置即可。下图中倒数第2行arr9[2]表示一维数组arr9中的第3个元素“15”,最后一行arr10[1,1]表示二维数组arr10的第2行第2个元素“25”。
同样ndarray可以使用切片访问多个元素。下图中第2行生成了0-9的整数组成的一维数组arr11,第4行进行切片操作,将数组第6-9个元素取出赋值给变量arr_slice;注意:切片是数组的视图,任何对切片的修改都会导致原数组的元素变化,第6行将切片第1个元素的值改为“0”,原数组arr11也随之发生了变化。如果你不想使用视图而只是对数组切片进行复制,需要使用copy( )函数。
切片中使用m:n的形式,表示[m, n)的半开半闭的范围。m,n分别表示切片的开始位置和结束位置,m若省略表示从第一个元素开始,n若省略表示到最后一个元素结束,m,n都省略表示取得该维度所有元素。熟练掌握切片对学习numpy很有必要,请读者参照下图分析切片的原理:
一维数组可以看做是个列表,二维数组可以看成是一个矩阵,可是对于多维数组,不少初学者可能会觉得不容易理解,特别是在进行切片操作时更是如此。下图用10以内的随机自然数填充了一个三维数组arr12,从打印的结果可以观察到,三维数组实际上由2个二维数组组成,arr12[0]表示第1个二维数组,arr12[0, 1]表示第1个二维数组的第2行,arr12[0, 1, 2]表示第1个二维数组第2行的第3个元素。
对多维数组的切片也跟二维数组是类似的,请读者自行分析下列几个表达式的切片结果:
ndarray数据类型及转换的更多相关文章
- java中数据类型的转换
数据类型的转换,分为自动转换和强制转换. 自动转换是程序执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换 强制转换必须在代码中声明,转换顺序不受限制 自动数据类 ...
- Java的基本数据类型与转换
1.1 Java为什么需要保留基本数据类型 http://www.importnew.com/11915.html 基本数据类型对大多数业务相关或网络应用程序没有太大的用处,这些应用一般是采用客户端/ ...
- java的数据类型的转换
一:java的数据类型转换除布尔类型boolean(不能转换)有两种:<一> 自动转换: <二> 强制转换 <一>.自动转换:就是将小的数据类型自动转换成大的数据类 ...
- JavaScript学习笔记——数据类型强制转换和隐式转换
javascript数据类型强制转换 一.转换为数值类型 Number(参数) 把任何的类型转换为数值类型 A.如果是布尔值,false为0,true为1 B.如果是数字,转换成为本身.将无意义的后导 ...
- JAVA数据类型自动转换,与强制转换
一.数据类型自动转换 public class Test{ public static void main(String[] args){ int a = 1; double b = 1.5; dou ...
- Java学习笔记之:Java数据类型的转换
一.介绍 数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换:强制类型转换则必须在代码中声明,转换顺序不受 ...
- 语言基础:C#输入输出与数据类型及其转换
今天学习了C#的定义及特点,Visual Studio.Net的集成开发环境和C#语言基础. C#语言基础资料——输入输出与数据类型及其转换 函数的四要素:名称,输入,输出,加工 输出 Console ...
- C#基础(八)——C#数据类型的转换
C#数据类型的转换主要有以下几种方式: 1.强制转换 注意:char类型不能强制转换成int,如果使用强制转化,得到的是原整数的ASCII码值. 2.class.parse(string类型的变量), ...
- php之数据类型自动转换
1:概述 ---php是一种弱类型的语言,它可以根据运行环境的变化而自动进行数据类型的转换 1.1转换成布尔类型的原则 以下值都将转换成布尔类型中的false: A.布尔类型的false; B.空字符 ...
随机推荐
- C++-POJ1021-2D-Nim[hash]
哈希,对于每个点哈希一次 哈希的方式:该点到联通分量边界(上下左右)的距离和 然后分别对两个图的n个点按hash值排序,判断是否相等即可 #include <set> #include & ...
- AcWing 827. 双链表
https://www.acwing.com/problem/content/829/ #include <iostream> using namespace std; ; int m; ...
- sqlserver 数据保留固定位小数,四舍五入后保存
在实际业务中遇到金额保留四舍五入后,保留两位小数的需求.但是原来的数据是保留的6位小数,所以需要转化一下.具体实现过程如下: EG:SELECT CAST ( ROUND(1965.12540,2) ...
- thinkphp的模型操作
先开个坑 WHERE篇 1, 模糊查询 where['keyword'] = [ 'like' , '%test%'] 2, 不等于,大于 ,小于 EQ 等于(=)NEQ 不等于(<& ...
- Java与Web前端发展前景及薪资对比
Web前端和Java谁的薪资待遇高?关于这个问题,是很多网友都感兴趣的,在各大论坛贴吧上也看到了不少类似的问题. 现在的互联网行业飞速发展,因此有很多小伙伴想要进入IT行业分一杯羹,但是关于学习什么技 ...
- 其他 - markdown 常用语法
1. 概述 简述 markdown 相关的标记 2. markdown markdown 概述 简单的标记语言 用作快速排版 使用 使用标记对文章样式进行描述 通过专门的引擎读取, 可以展示简单的样式 ...
- 树莓派4B踩坑指南 - (11)免费搭建网站(宝塔,花生壳)
目录 宝塔 安装宝塔面板 登录及初始化设置 安装网站 花生壳 安装花生壳 设置花生壳 测试 问题(未解决但不影响使用) 网站统计 树莓派这么低的功耗,不用来当服务器总感觉有点浪费...完成效果:htt ...
- mysql开启远程访问及相关权限控制
开启mysql远程访问: 授予用户user 密码 passwd 所有权限 所有主机IP可访问 授权语句:Grant <权限> on 表名[(列名)] to 用户 With grant op ...
- CentOS: 网络连接故障排除
yum不能正常动作,惯性认为是需要替换BaseURL,结果后来才发现是Gateway不知什么时候被错误设定了,memo如下. 现象表现于yum不能正常动作,确认ping的操作,发现是不能解析DNS [ ...
- PTA的Python练习题(十八)
第4章-20 求矩阵各行元素之和 遇到一个麻烦的事情: 上面a,b输入,如果一起输入转int会报错,因为int只能一对一 但是明明我分开来int了,下面第十行还是报错说我的b是string字符,难不成 ...