Python numpy(2)
import numpy as np
vector=np.array([5,10,15,20])
#返回数组中既等于10又等于5的bool型判别数组,返回[False,False,False,False]
equal_to_ten_and_five=(vector==10)&(vector==5)
#返回数组中等于10或等于5的bool型判别数组,返回[False,True,True,False]
equal_to_ten_or_five=(vector==10)|(vector==5)
#利用Bool型数组作为索引赋值,返回[50,50,15,20]
vector[equal_to_ten_or_five]=50
#将数组类型进行改变
vector=np.array(["5","10","15","20"]) #字符型数组
vector=vector.astype(float) #改变为float型数组
#求极值
vector.mim
vector.max
#按行或按列求和
matrix=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
matrix.sum(axis=0) #按列求和,返回[12,14,18]
martix.sum(axis=1) #按行求和,返回[6,1,5,24]
#数组1维转2维(向量转矩阵)
a=[1,2,3,4,5,6,7,8,9,10]
a.reshape(2,5) #转换为2行5列数组,[[1,2,3,4,5],
[6,7,8,9,10]]
#矩阵维度
a.ndim #返回 2
#矩阵元素数量
a.size #返回 10
b.zeros=((3,4)) #创建3行4列的全0矩阵
c.ones=((2,3,4),dtype=np.int32) #创建3维全1矩阵,数据类型为int32
#按规则创建数组
d=np.array(10,30,5) #创建一个从10开始,步长为5,最后数据小于30的数组
#返回[10,15,20,25]
#创建随机矩阵
e=np.random.random((2,3)) #创建一个2行3列,值从-1到1的随机数值矩阵
from numpy import pi
np.linspace(0,2*pi,100) #创建一个从0开始,到2*pi结束,平均100个数值的矩阵
#数组的运算
#加、减、平方(略)
#乘法:A*B 为两个矩阵对应位置直接相乘
#A.dot(B) / np.dot(A,B) 为两个矩阵的内积
np.exp(A) #求e的多少次幂
np.sqrt(A) #对A中每个值求根号
np.floor(10*np.random.random((3,4))) #创建向下取整的数组
a=np.ravel() #将多维数组转换为1维数组
a.T #数组的转置
#矩阵的拼接
np.hstack(a,b) #a,b数组按行进行拼接
np.vstack(a,b) #a,b数组按列进行拼接
#矩阵的切分
np.hsplit(a,3) #将数组a按行平均切成3分(按行索引,竖着切)
np.hsplit(a,(3,4)) #将数组a按行分别在第3个数值后、第4个数值后竖着切一刀,返回3个数组
np.vsplit(a,3)
np.vsplit(a,(3,4)) #与上同理,(横着切)
#数组的复制
b=a.view() #浅复制,指向不同,但共用一套值,改变b的值,a的值也随之改变
b=a.copy() #深复制,指向不同,也不共用一套值
#找出最大值
a_ind=a.argmax[axis=0] #找出每列中数据最大值的位置
#a.shape返回列数,range()为计数函数,range(a.shape[1])返回[0:4],左闭右开区间,
#即a_max返回数组中每列最大的值,返回一个以为数组
a_max=a[a_ind,range(a.shape[1])]
#数组的扩展
a=np.tile(2,3) #行数扩展为原来的2倍,列数扩展为原来的3倍,数值为整体复制
#排序
a.sort(axis=1) #每行数值有小到大进行排序
a.argsort #由小到大索引值进行排序