Python——numpy基础
import numpy as np #引入numpy且重命名为np
a = np.array([1,2,3,4]) #a为1*4列表数矩阵
a.shape = 2,2 #由1*4变为2*2(此处不是转置)
b = a.reshape (2,2) #此处reshape是创建一个新的数组,而原来的shape保持不变
a[1] = 100 #将数组的第2个元素改为100 此时b中的第二个元素也会发生改变
d[0] #表示第一行的所有元素
d[0][1] #表示第一行第二列的元素
d[0,1] #也可以表示第一行第二列的元素
d[0,:] #冒号':'表示一整行或一整列的元素 d[0,:]与d[0]的表达相同
d[1:3,2:4] #切片 切出一个矩形的矩阵区域
np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]],dtype=np.float) #可以将数组里的元素都设置为浮点型(dtype=np.complex为复数形式)
c=np.arange(0,1,0.1) #表示从0到1且每个数间隔0.1的一个数组
np.linspace(0,1,10) #步长为1/9(包含右边界)
np.linspace(0,1,10,endpoint = False) #步长为1/10(不包含右边界)
logspace函数和linspace类似,不过它创建等比数列,下面的例子产生1(10^0)到100(10^2)、有20个元素的等比数列:np.logspace(0,2,20)
创建数组:
zeros #创建全为0的矩阵
d=np,zeros(4) #元素类型默认为float,因此这里可以省略np.float
ones
e=np.ones(4) #创建全为1的矩阵
empty #只分配内存而不初始化
f=np.empty((2,3),np.int)
函数
j = np.fromfunction(func,(10,))
# 补充
a[-1] #可以得知最后一个元素的内容
a[3:5] #用范围作为下标获取数组的一个切片,包括a[3]不包括a[5]
a[:5] #省略开始下标,表示从a[0]开始
a[-1] #下标可以是用负数,表示从数组后往前数
a[-4,-1] #原理同上,倒着数且左闭右开
a[2:4]=100,101 #下标还可以用来修改元素的值
a[::-1] #省略范围的开始下标和结束下标,步长为-1,整个数组头尾颠倒
存取元素
b = a[[3,3,1,8]] #指的是b取a在3,3,1,8位置上的元素
c = a[np.array([3,3,-3,8]) #下标可以是负数
a[np.array([True,False,True,True,False])] = -1,-2,-3 #将True的位置元素导出并替换为-1,-2,-3
布尔数组
x = np. random.rand(10) #产生一个长度为10,元素值为0-1的随机数的数组
x>0.5 #数组x中的每个元素和0.5进行大小比较,得到一个布尔数组,True表示x中对应的值大于0.5
x[x>0.5] #使用x>0.5返回的布尔数组收集x中的元素,因此得到的结果是x中所有大于0.5的元素的数组
''' #计算True和False的个数:
#例如数组:
arr = [True, False, False]
import numpy as np
print('True个数:', np.sum(arr!=0))
print('False个数:', np.sum(arr==0))
#输出:
True个数: 1
False个数: 2
'''