您的位置:首页 > 编程语言 > Python开发

numpy学习笔记(2)

2017-02-09 15:28 274 查看

五 结构数组

numpy 可以像c语言中用关键字struct一样定义结构类型

person = dtype({'names':['name','age','weigth'], 'formats':['S16', 'i', 'f']}, align = True)
a = array([('Tom', 20, 60),('Green', 30, 50)], dtype = person)我们首先通过dtype函数来创建结构类型对象,函数第一个参数是一个字典,其中第一个字段表示变量名,第二个字段表示变量类型,变量类型可以参考有关书籍,函数第二个参数是选择是否进行内存对齐,如果内存对齐,以便于与c语言中的结构类型进行转换

六 存取元素

1.索引和切片

数组的索引和切片和python中的标准方法相同

>>> a = arange(10)
>>> a[5] 下标索引
5
>>> a[3:5] 切片索引
array([3, 4])
>>> a[:5] 省略,相当于a[0:5]
array([0, 1, 2, 3, 4])
>>> a[:-1] 省略,相当于a[0:-1]
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> a[1:-1:2] 最后一个相当于步长
array([1, 3, 5, 7])
>>> a[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
>>> a[5:1:-2] 步长为负数时,开始下标必须大于结束下标
array([5, 3])

numpy中通过下标来获取的数组是原数组的一个视图,改变获取的数组原数组也会改变
2.使用序列来存取数组

当使用整数序列对数组元素进行存取时,将使用整数序列中的每个元素作为下标,整数序列可以是列表或者数组。

>>> a = arange(10,1,-1)
>>> a
array([10, 9, 8, 7, 6, 5, 4, 3, 2])
>>> b = a[array([0,-1])] 使用数组来取数组
>>> b
array([10, 2])
>>> c = a[[0,1]] 使用列表来取数组
>>> c
array([10, 9])
>>> c[0]=1
>>> a
array([10, 9, 8, 7, 6, 5, 4, 3, 2])

通过序列取出的数组和原数组不占用相同的存储空间,改变取出的数组,原数组不改变

3.使用布尔数组存取数组

使用布尔数组作为下标存取元素,将下标为True的元素取出。取出的数组和原数组不占用相同的存储空间,并且这种方式不适用于布尔列表

>>> a=arange(3)
>>> a
array([0, 1, 2])
>>> b=array([True,False,True])
>>> c=a[b]
>>> c
array([0, 2])
>>> c=a>1
>>> c
array([False, False, True], dtype=bool)
>>> a[c]
array([2])

七 ufunc运算

numpy提供常用的数学函数,如
sin
,
cos
exp
。在NumPy里这些函数作用按数组的元素运算,产生一个数组作为输出。

import numpy as np
a =np.array([1,2,3])
b =np.array([1,2,3])
c = np.add(a,b)
np.add(a,b,a) 相当于 a += b
print a
print c
[2 4 6]
[2 4 6]


此外还有subtract(-),multiply(*)等函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: