NumPy简明教程之二
来源:互联网 发布:ed2k樱井知香 喷泉 编辑:程序博客网 时间:2024/05/16 04:44
本篇文章对NumPy数组进行较深入的探讨。首先介绍自定义类型的数组,接着数组的组合,最后介绍数组复制方面的问题。
自定义结构数组
通过NumPy也可以定义像C语言那样的结构类型。在NumPy中定义结构的方法如下:
定义结构类型名称;定义字段名称,标明字段数据类型。
这里student是自定义结构类型的名称,使用dtype函数创建,在第一个参数中,'names'和'formats'不能改变,names中列出的是结构中字段名称,formats中列出的是对应字段的数据类型。S32表示32字节长度的字符串,i表示32位的整数,f表示32位长度的浮点数。最后一个参数为True时,表示要求进行内存对齐。
字段中使用NumPy的字符编码来表示数据类型。更详细的数据类型见下表。
数据类型字符编码整数i无符号整数u单精度浮点数f双精度浮点数d布尔值b复数D字符串SUnicodeUVoidV在定义好结构类型之后,就可以定义以该类型为元素的数组了:除了在每个元素中依次列出对应字段的数据外,还需要在array函数中最后一个参数指定其所对应的数据类型。
注:例子来源于张若愚的Python科学计算艺术的29页。更多关于dtype的内容请参考《NumPy for Beginner》一书的第二章。
组合函数
这里介绍以不同的方式组合函数。首先创建两个数组:
水平组合
也可通过concatenate函数并指定相应的轴来获得这一效果:垂直组合
同样,可通过concatenate函数,并指定相应的轴来获得这一效果。深度组合
另外,还有深度方面的组合函数dstack。顾名思义,就是在数组的第三个轴(即深度)上组合。如下:
仔细观察,发现对应的元素都组合成一个新的列表,该列表作为新的数组的元素。行组合
行组合可将多个一维数组作为新数组的每一行进行组合:
对于2维数组,其作用就像垂直组合一样。
列组合
列组合的效果应该很清楚了。如下:
对于2维数组,其作用就像水平组合一样。分割数组
在NumPy中,分割数组的函数有hsplit、vsplit、dsplit和split。可将数组分割成相同大小的子数组,或指定原数组分割的位置。
水平分割
也调用split函数并指定轴为1来获得这样的效果:垂直分割
垂直分割是沿着垂直的轴切分数组:
同样,也可通过solit函数并指定轴为1来获得这样的效果:面向深度的分割
dsplit函数使用的是面向深度的分割方式:
复制和镜像(View)
当运算和处理数组时,它们的数据有时被拷贝到新的数组有时不是。这通常是新手的困惑之源。这有三种情况:
完全不复制
简单的赋值,而不复制数组对象或它们的数据。
Python 传递不定对象作为参考4,所以函数调用不拷贝数组。
视图(view)和浅复制
不同的数组对象分享同一个数据。视图方法创造一个新的数组对象指向同一数据。
切片数组返回它的一个视图:深复制
这个复制方法完全复制数组和它的数据。
- NumPy简明教程之二
- NumPy简明教程(二、数组3)
- NumPy简明教程(二、数组1)
- NumPy简明教程(二、数组2)
- NumPy简明教程(二、数组3)
- NumPy简明教程(二、数组2)
- NumPy简明教程(二、数组1)
- NumPy简明教程(二、数组3)
- NumPy简明教程(二、数组1)
- NumPy简明教程(二、数组1)
- NumPy简明教程(二、数组3)
- NumPy简明教程(二、数组2)
- numpy简明教程(1)
- numpy简明教程(2)
- numpy简明教程(3)
- NumPy教程之(二)
- Vbs脚本编程简明教程之二
- NumPy简明教程(一、简介)
- mysql日期时间操作
- 参加第二届中国网络营销行业大会会议记录
- mfc bmp资源 导入 提示 大于256种颜色
- C指针编程之道(五)- 排序算法
- HashMap是如何组织数据的
- NumPy简明教程之二
- 我的网易博客http://wmzjzwlzs.blog.163.com/
- 我的网易博客http://wmzjzwlzs.blog.163.com/
- 我的网易博客http://wmzjzwlzs.blog.163.com/
- Hibernate实现增删改查
- 我的网易博客http://wmzjzwlzs.blog.163.com/
- 我的网易博客http://wmzjzwlzs.blog.163.com/
- 我的网易博客http://wmzjzwlzs.blog.163.com/
- SVN Unable to connect to a repository at URL