Numpy是python的一个三方库,主要是用于计算的,数组的算数和逻辑运算。与线性代数有关的 *** 作。
很多情况下,我们可以与SciPy和 Matplotlib(绘图库)一起使用。来替代MatLab,下面我来来看一下numpy库的常见的一些 *** 作。
#!/usr/bin/env python# -*- Coding: utf-8 -*-import numpy as npif __name__ == ‘__main__‘: print(np.array([1,2,3]))
我们可以看到我们的输出为[1,3],类型为<class ‘numpy.ndarray‘>,我们可以将一个列表转化为数组。这里我也列出了一些最基本的用法
#!/usr/bin/env python# -*- Coding: utf-8 -*-import numpy as npif __name__ == ‘__main__‘: a = np.array([‘1‘,‘2‘,‘3‘]) print(a.size) # 数组的长度 print(a.shape) # 数组的结构 print(a.ndim) # 数组的维度 print(a.dtype) # 内部元素类型
创建10行10列的数值为浮点1的矩阵
array_one = np.ones([10,10])
快创建10行10列的数值为浮点0的矩阵
array_zero = np.zeros([10,10])
从现有的数据创建数组
array(深拷贝) asarray(浅拷贝)#!/usr/bin/env python# -*- Coding: utf-8 -*-import numpy as npif __name__ == ‘__main__‘: a = array_one = np.ones([10,10]) b = np.asarray(a) print(ID(a)) print(ID(b)) c = np.array(b) print(ID(c))
说完了这些,我们应该对于numpy有了初步的认识,我们到这里知道了numpy.....原来是生成一个多维数组的玩意
我们再来深入的看一下numpy的内部信息吧。
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。
ndarray 内部由以下内容组成:
一个指向数据(内存或内存映射文件中的一块数据)的指针。
数据类型或 dtype,描述在数组中的固定大小值的格子。
一个表示数组形状(shape)的元组,表示各维度大小的元组。
一个跨度元组(strIDe),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。
这里我们提到的了跨度,跨度可以是负数,这样会使数组在内存中后向移动,切片中 obj[::-1] 或 obj[:,::-1] 就是如此。注意这里是字节数,不是字符数。
创建一个 ndarray 只需调用 NumPy 的 array 函数即可,这里我们要说一个重要的属性,也是容易误解的属性->ndim,秩,即轴的数量或维度的数量,我们只记住他是维度的数量就ok了。
索引:
import numpy as npif __name__ == ‘__main__‘: a = np.arange(10) print(a) s = slice(2,8,2) # 从索引 2 开始到索引 8 停止,间隔为2,是一个左闭右开区间 print(a[s])
切片:
#!/usr/bin/env python# -*- Coding: utf-8 -*-import numpy as npif __name__ == ‘__main__‘: a = np.arange(10) print(a) print(a[2:8:2]) # 从索引 2 开始到索引 8 停止,间隔为 2,不包含8的一个左闭右开区间
冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含行中元素的 ndarray。
a[...,n]) # 第n+1列元素
a[n,...]) # 第n+1行元素
#!/usr/bin/env python# -*- Coding: utf-8 -*-import numpy as npif __name__ == ‘__main__‘: a = np.array([[1,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]) print(a) print(a[...,2]) print(a[1,...])
高级索引:
NumPy 比一般的 Python 序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。
#!/usr/bin/env python# -*- Coding: utf-8 -*-import numpy as npx = np.array([[1,2],[3,6]])y = x[[0,1,[0,1,0]]print(x)print (y)
在y的输出我们可以看到,我们对于X切片得到的y,其实[0,1,2],[0,0]两个数组,我们得到的是第0,0;1,1;2,0三个数据。
布尔索引:
import numpy as npx = np.array([[0,4,5],[6,11]])print(‘我们的数组是:‘)print(x)print(‘\n‘)# 现在我们会打印出大于 5 的元素print(‘大于 5 的元素是:‘)print(x[x > 5])
我们得到的是所有大于5的元素。
总结以上是内存溢出为你收集整理的使用NumPy、Numba的简单使用(一)全部内容,希望文章能够帮你解决使用NumPy、Numba的简单使用(一)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)