import numpy as np #有关数组矩阵运算的库,由c/C++,fortran代码通过线性代数傅里叶变换和随机数生成函数实现
#底层是ndarray结构,shape:数组形状及几行几列。data:数组数据。dtype:数据类型。strides:当前位置到下一个位置需要跨越的字节数。order:访问元素顺序’C'行'F‘列。
a = np.array([1,2,3])# a为整体
print(a)
a += 1 # 整体加一
print (a)
创建数组:
import numpy as np
a = np.array([[1,2,3],[4,5,6]],dtype = np.complex)# 二维数组
print(a)
a.shape = (3,2) #调整数组大小
#两行三列改为三行两列,总元素个数不变
print(a)
#产生数组的函数
import numpy as np
x1 = np.empty([3,2],dtype = int)
#创建一个空数组,参数为:数组形状,数据类型,元素值是不确定的因为没有初始化,空间元素为原先元素
print(x1)
x2 = np.zeros([3,2], dtype = np.int, order = 'C')#order = 'F'是列为主的数组order = ‘C'是行为主的数组
#创建一个全0数组
print(x2)
x3 = np.zeros([2,2],dtype = [('x','i4'),('y','i4')])#创建自定义类型
print(x3)
x4 = np.ones([2,2],dtype = int,order = 'C')
#创建一个全1数组
print(x4)
用各种方法创建不同类型数组:
#产生数列的函数
import numpy as np
arr1 = range(0,5,1)
#创建一个数列,参数依次为:开始,结束,步长为整数默认为1,未指定元素个数
print(arr1)
arr2 = np.arange(3,9,0.2)
#创建一个数列参数依次为开始,结束,步长,未指定元素个数,不包含最大值
print(arr2)
arr3 = np.linspace(1,5,10)
#创建一个数列,参数依次为开始,结束,数字个数,未指定元素间隔,可包含最大值
print(arr3)
用随机函数创建数组:
#使用随机函数创建数组
import numpy as np
x1 = np.random.rand(2,3)
#产生两行三列随机浮点数组,值范围为0到1
print(x1)
x2 = np.random.randint(0,10,(2,2),dtype = int)
#参数:值范围从0到10,行列,值类型:只可选int相关的,默认整数数组
print(x2)
x3 = np.random.random(2,3)
#类似x1
print(x3)
x4 = np.random.uniform(1,2,(2,3))
#浮点类型数组,参数:值范围1~2,行列
print(x4)
数组切片:
arr = np.arange(24).reshape(4,6)
#首先产生一个数列然后通过reshape将一维变为二维4行6列的数组
print(arr)
arr1 = arr[1:3,1:3]
#留下数组的第一行到第二行(写3是不包含第3行的),保留列的第一列到第二列(写3是不包含第3列的)
print(arr1)
arr1 = arr[1: , :3]
#末尾不写默认最后一行/列,起始不写默认第一行/列
print(arr1)
#生成一个2*3*4的三维数组(即想象一个正方体(即两个3*4的二维数组叠起来就成为了三维)切片保留两个二维数组的第一行得到一个2*4的数组
import numpy as np
arr1 = np.arange(12).reshape(3,4)
arr11 = arr1[:1,:]
arr2 = np.arange(12).reshape(3,4)
arr22 = arr2[:1,:]
arr3 = np.array([arr1,arr2])
#np.array将其他数据结构转换为数组类型
arr33 = np.array([arr11,arr22])
print(arr3)
print(arr33)
#——————————————————————————————————————
arr5 = np.arange(12).reshape(2,3,4)
arr6 = arr5[0:2,0,0:5]
print(arr6)
#可以直接形成多维数组