numpy学习笔记
来源:互联网 发布:淘宝客算销量吗 编辑:程序博客网 时间:2024/06/17 19:24
全文摘自《NumPy学习指南》。
1.)Numpy数组在竖直运算方面的效率强于Python提供的list容器。
2.)Numpy.arange()
def arange(start=None, stop=None, step=None, dtype=None):Examples -------- >>> np.arange(3) array([0, 1, 2]) >>> np.arange(3.0) array([ 0., 1., 2.]) >>> np.arange(3,7) array([3, 4, 5, 6]) >>> np.arange(3,7,2) array([3, 5]) >>> a = np.arange(4) >>> type(a) <type 'numpy.ndarray'> >>> print a [0 1 2 3] #注意点,和python的list相比,没有逗号分隔
3.) numpy中的ndarray是一个多维数组对象,该对象由两部分组成:
—1) 实际的数据
—2) 描述这些数据的元数据
大部分的数组操作仅仅修改数据部分,而不改变底层的实际数据。
numpy数组是同构的,它包含一个dtype对象所描述的元素。可以根据基本数字类型的不同组合构造一个dtype对象。
In [10]: a = numpy.arange(5)In [11]: a.dtypeOut[11]: dtype('int64')
数组a的元素的数据类型是int64.
In [12]: a.shapeOut[12]: (5,)
维度是一维,有5个元素。
创建多维数组:
In [14]: a = numpy.array([numpy.arange(2),numpy.arange(2)])In [15]: aOut[15]: array([[0, 1], [0, 1]])In [18]: a.shapeOut[18]: (2, 2)
array函数可以依据给定的对象生成数组。给定的对象应是类数组。如上例中,我们传给array函数的对象是一个NumPy数组的对象,像这样的类数组对象是array函数的唯一必要参数,其他的参数都有默认值。
选取数组元素:
In [22]: a = numpy.array([[1,2],[3,4]]) #为什么这里可以传这样的list进去?In [23]: aOut[23]: array([[1, 2], [3, 4]])In [29]: a[0]Out[29]: array([1, 2])In [30]: a[0][0]Out[30]: 1In [31]: type(a[0][0])Out[31]: numpy.int64In [32]: a[0][0] == 1Out[32]: True############array(...) array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0) Create an array. Parameters ---------- object : array_like An array, any object exposing the array interface, an object whose __array__ method returns an array, or any (nested) sequence.一个数组,任何暴露数组接口的对象,一个数组方法返回数组的对象,或任何对象(嵌套)序列。#这就是说一个嵌套的序列就行了?
python支持的数据类型有整形、浮点型以及复数型。numpy添加了更多的数据类型。
++++++++++++++++++
每一种数据类型,都有相应的类型转换函数
In [37]: a = numpy.float64(42)In [38]: type(a)Out[38]: numpy.float64In [41]: a = numpy.arange(7,dtype=numpy.uint16)In [42]: print a[0 1 2 3 4 5 6]In [43]: aOut[43]: array([0, 1, 2, 3, 4, 5, 6], dtype=uint16)In [44]: type(a)Out[44]: numpy.ndarray
数据类型对象:
数据类型对象是numpy.dtype类的实例。数据类型对象可以给出单个数组元素
在内存中占用的字节数,即dtype类的itemsize属性。
In [46]: a.dtype.itemsizeOut[46]: 2即为占用两个字节。
字符编码:
为兼容NumPy的前身Numeric。NumPy可以使用字符编码来表示数据类型。
In [47]: numpy.arange(7,dtype='f')Out[47]: array([ 0., 1., 2., 3., 4., 5., 6.], dtype=float32)
创建自定义数据类型:
自定义数据类型是一种异构数据类型,可以当做用来记录电子表格或数据库中一行数据
的结构。
In [52]: t = numpy.dtype([('name',numpy.str_,40),('numitems',numpy.int32),('price',numpy.float32)])In [53]: tOut[53]: dtype([('name', 'S40'), ('numitems', '<i4'), ('price', '<f4')]) In [55]: item = numpy.array([('Meaing of life dvd',42,3.14),('butter',13,2.7)],dtype=t)In [56]: itemOut[56]: array([('Meaing of life dvd', 42, 3.140000104904175), ('butter', 13, 2.700000047683716)], dtype=[('name', 'S40'), ('numitems', '<i4'), ('price', '<f4')])In [57]:
一维数组的索引和切片:
In [57]: a = numpy.arange(9)In [58]: aOut[58]: array([0, 1, 2, 3, 4, 5, 6, 7, 8])In [59]: a[3:5]Out[59]: array([3, 4])In [60]: print a[3:5][3 4]In [61]: a[0] = 3In [62]: print a[3 1 2 3 4 5 6 7 8]
多维数组的切片和索引:
In [63]: b = numpy.arange(24).reshape(2,3,4)In [64]: bOut[64]: array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]])In [65]: b.shapeOut[65]: (2, 3, 4)In [66]: b[0][1][2]Out[66]: 6############## 2*3*4 == 24.In [67]: b[0,1,:]Out[67]: array([4, 5, 6, 7])In [68]: b[0,:,:]Out[68]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])In [69]: b[0,...]Out[69]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
将一个数组展平: ravel,flatten,reshape,resize
In [71]: a = b.ravel() #b没有变化In [73]: aOut[73]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])In [74]: c = b.flatten() #b也没有变化In [75]: cOut[75]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])使用reshape函数,设置维度:In [80]: d = b.reshape(6,4) #b不会变化In [81]: dOut[81]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]])将b变成了6*4的多维数组In [82]: e = b.resize((2,12)) #直接修改了bIn [83]: e #并没有值In [84]: bOut[84]: array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])
数组的组合:
numpy数组有水平组合,垂直组合和深度组合等多种组合方式,我们将使用:
vstack、dstack、column_stack、row_stack以及concatenate函数来完成数组的组合。
In [87]: a = numpy.arange(9).reshape(3,3)In [88]: aOut[88]: array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])In [89]: b = 2*aIn [90]: bOut[90]: array([[ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]])
(1)水平组合:hstack ,concatenate
In [92]: c = numpy.hstack((a,b))In [93]: cOut[93]: array([[ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]])In [95]: d = numpy.concatenate((a,b),axis=1)In [96]: dOut[96]: array([[ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]])
(2)垂直组合: 垂直组合同样需要构造一个元组作为参数:vstack,concatenate
In [97]: numpy.vstack((a,b))Out[97]: array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]])#将concatenate函数的axis参数设置为0即可。 In [98]: numpy.concatenate((a,b),axis=0)Out[98]: array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]])
(3)深度组合:
- NumPy学习笔记(1)
- NumPy学习笔记 (2)
- NumPy学习笔记 (3)
- NumPy学习笔记 (4)
- NumPy学习笔记
- numpy学习笔记
- NumPy学习笔记
- NumPY学习笔记
- 【python】numpy学习笔记
- Numpy 学习笔记一
- NumPy学习笔记1
- NumPy学习笔记2
- NumPy学习笔记
- NumPy学习笔记
- [NumPy]入门-学习笔记
- numpy学习笔记
- numpy入门学习笔记
- NumPy学习笔记
- 软件缺陷的正式定义
- 基于SSH框架-CRM客户资源管理系统-简单小项目开发记录-CRM系统-04
- 数据结构实验之排序三:bucket sort
- 安装PHP5
- SSH开发 报错:Unable to instantiate Action, controller.MsgController, defined for'show' in namespace '
- numpy学习笔记
- 利用格式化<iomanip>输出三角形
- 购物管理系统遇到的问题
- Servlet加载顺序
- visual studio 多行注释快捷键
- 【LeetCode】746.Min_Cost_Climbing_Stairs
- IT行业的风险投资
- Clion配置Opencv环境MacOS教程
- c++ GDI绘图 利用SetROP2函数的R2_NOT与R2_NOTXORPEN属性,重新绘制时清除原先的图