numpy.array 操作使用简单总结
importnumpyasnp
numpy.array常用变量及参数
- dtype变量,用来存放数据类型,创建数组时可以同时指定。
- shape变量,存放数组的大小,这人值是可变的,只要确保无素个数不变的情况下可以任意修改。(-1为自动适配,保证个数不变)
- reshape方法,创建一个改变了形状的数组,与原数组是内存共享的,即都指向同一块内存。
创建数组的方法
np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]],dtype=np.float) np.arange(0,1,0.1)#0到1之间步长为0.1的数组,数组中不包含1 np.linspace(0,1,5)#开始:0,结束1,元素个数5。array([0.,0.25,0.5,0.75,1.]) np.logspace(0,1,5)#开始:0,结束1,元素个数5.array([10**0.,10**0.25,10**0.5,10**0.75,10**1.]) #结果是array([1.,1.77827941,3.16227766,5.62341325,10.]) s='abcdefg' np.fromstring(s,dtype=np.int8) deffunc2(i,j): return(i+1)*(j+1) np.fromfunction(func2,(9,9)) np.ones((2,2)) np.zero((2,2)) np.eye(2) #创建二维数组: np.arange(0,60,10).reshape(-1,1)+np.arange(0,6)
数据读取
通过下标范围获取数据:与pythonlist对象操作一致。不同点是这方法获取的数组与原数组是内存共享的。
通过整数序列获取新数组:例x[[3,2,3,2]],产生新数组,内存不共享
使用布尔数组获取数据:例: x[np.array([True,False,True,False,False])]或x[x>0.5],返回True对应的数字。
代码示例:
>>>x=np.arange(10) >>>y=x[::-1] >>>x array([0,1,2,3,4,5,6,7,8,9]) >>>y array([9,8,7,6,5,4,3,2,1,0]) >>>y[0]=100 >>>x array([0,1,2,3,4,5,6,7,8,100]) >>>y array([100,8,7,6,5,4,3,2,1,0]) >>>x[0]=99 >>>x array([99,1,2,3,4,5,6,7,8,100]) >>>y array([100,8,7,6,5,4,3,2,1,99]) >>>y=x[1:6] >>>y array([1,2,3,4,5]) >>>y[2]=33 >>>y array([1,2,33,4,5]) >>>x array([99,1,2,33,4,5,6,7,8,100]) >>>x[[3,2,3,2]] array([33,2,33,2]) >>>z=x[[3,2,3,2]] >>>z array([33,2,33,2]) >>>z[3]=4 >>>z array([33,2,33,4]) >>>x array([99,1,2,33,4,5,6,7,8,100]) >>>x[x>10] array([99,33,100]) >>>
数组扩展
np.vstack((a,b)): 增加行数,把b数据追加到a的下面,上下连接。
np.hstack((a,b)):增加列数,把a,b左右连接。
>>>a=np.ones((3,3)) >>>b=np.eye(3) >>>a array([[1.,1.,1.], [1.,1.,1.], [1.,1.,1.]]) >>>b array([[1.,0.,0.], [0.,1.,0.], [0.,0.,1.]]) >>>b*=2 >>>b array([[2.,0.,0.], [0.,2.,0.], [0.,0.,2.]]) >>>np.vstack((a,b)) array([[1.,1.,1.], [1.,1.,1.], [1.,1.,1.], [2.,0.,0.], [0.,2.,0.], [0.,0.,2.]]) >>> >>>np.hstack((a,b)) array([[1.,1.,1.,2.,0.,0.], [1.,1.,1.,0.,2.,0.], [1.,1.,1.,0.,0.,2.]])
ufunc运算
ufunc是universalfunction的缩写,它是一种能对数组的每个元素进行操作的函数。NumPy内置的许多ufunc函数都是在C语言级别实现的,因此它们的计算速度非常快。
np.sin(x,x) np.add(a,b)~a+b np.subtract(a,b)~a-b np.multiply(a,b)~a*b divide~a/b floordivide~a//b negative~-a power~a**b remainder~a%b
注意:复杂运算时,中间步聚会有临时变量,这会拖慢运算速度。
如:
x=a*b+c
等价于
t=a*b x=t+c delt
所以可手动优化
x=a*b x+=c
二维数组转一维
>>>a array([[1,2,3,4], [4,5,6,7], [7,8,9,10]]) >>>a.ravel() array([1,2,3,4,4,5,6,7,7,8,9,10])
reshape函数可重新定义大小。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。