numpy
NumPy之于数值计算特别重要的原因之一,是因为它可以高效处理大数组的数据。这是因为:
- NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,NumPy数组使用的内存更少。
- NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。
ndarray:一种多维数组对象
import numpy as np arr_e=np.zeros((2,3)) arr_f=np.ones((3,3)) arr_g=np.full((3,2),10) arr_h=np.empty((2,3)) print(arr_h) arr_i =np.arange(0,9,3)#0为开始位置 3为步长 9为截止数 print(arr_i) arr_j=np.linspace(2,8,4)#4个等间距2-8之间的数 print(arr_j) # #点积运算 # A = np.array([(1,2),(2,1)])#1x0+2x1 ,1x2+2x0,2x0+1x1,2x2+1x0 # B = np.array([(0,2),(1,0)]) # print(np.dot(A,B)) # # arr=np.array([[3,4],[5,6]]) # print(arr[0,1]) # print(arr[0,...] # # # arr1=np.array([(1,2),(3,4),(5,6)]) # arr2 = arr1[[0,2,2],[0,1,0]] # print(arr2)
ndarray是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的。每个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象)
NumPy 迭代数组
import numpy as np a = np.arange(6).reshape(2,3) for x in a: print(x) for x in np.nditer(a): print (x, end=", " ) for x in np.nditer(a.T.copy(order='C')): print (x, end=", " ) for x in np.nditer(a, order='F'):Fortran order,即是列序优先; for x in np.nditer(a.T, order='C'):C order,即是行序优先;
迭代修改
import numpy as np a = np.arange(0,60,5) a = a.reshape(3,4) print ('原始数组是:') print (a) print ('\n') for x in np.nditer(a, op_flags=['readwrite']): x[...]=2*x print ('修改后的数组是:') print (a)
NumPy 高级索引
整数索引
import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print ('我们的数组是:' ) print (x) print ('\n') rows = np.array([[0,0],[3,3]]) cols = np.array([[0,2],[0,2]]) y = x[rows,cols] print ('这个数组的四个角元素是:') print (y)
rows是选的4个数的行
cols是选的4个数的列
NumPy数组的运算
数组很重要,因为它使你不用编写循环即可对数据执行批量运算。NumPy用户称其为矢量化(vectorization)。大小相等的数组之间的任何算术运算都会将运算应用到元素级
import numpy as np print ('将 10 左移两位:') print (np.left_shift(10,2)) print ('\n') print ('10 的二进制表示:') print (np.binary_repr(10, width = 8)) print ('\n') print ('40 的二进制表示:') print (np.binary_repr(40, width = 8)) # '00001010' 中的两位移动到了左边,并在右边添加了两个 0。
NumPy 排序函数
实例 import numpy as np a = np.array([[3,7],[9,1]]) print ('我们的数组是:') print (a) print ('\n') print ('调用 sort() 函数:') print (np.sort(a)) print ('\n') print ('按列排序:') print (np.sort(a, axis = 0)) print ('\n') # 在 sort 函数中排序字段 dt = np.dtype([('name', 'S10'),('age', int)]) a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt) print ('我们的数组是:') print (a) print ('\n') print ('按 name 排序:') print (np.sort(a, order = 'name'))