numpy:入门
来源:互联网 发布:mac双系统修复windows 编辑:程序博客网 时间:2024/06/06 10:38
为什么需要numpy:Python中的l数据类型list占用资源过大,不适合做大量计算;数据类型array又只能存储一维数组。所以引入numpy来处理多维数组的存储和计算。
一.创建数组(ndarray)
1.直接创建
np.array(object)
>>> import numpy as np>>> a=np.array([[0,1,2],[1,2,3]])>>> aarray([[0, 1, 2], [1, 2, 3]])
2.利用内置函数
np.zeros(shape),np.ones(shape),np.arange(start,stop,step),np.linspace(start,stop,num=50),np.random.rand(do,d1,.,dn),np.random.randint(low,high,size=None)
>>> np.zeros((2,2))array([[ 0., 0.], [ 0., 0.]])>>> np.ones((2,2))array([[ 1., 1.], [ 1., 1.]])>>> np.arange(0,10,1)array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.arange(0,9).reshape((3,3))array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])>>> np.linspace(0,10,11)array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])>>> np.random.rand(2,2)array([[ 0.11611405, 0.85913958], [ 0.11487685, 0.96038192]])>>> np.random.randint(0,10,(3,3))array([[8, 3, 8], [9, 5, 9], [3, 1, 0]])
打印数组:
一维数组print为row,二维数组print为matrices,三维数组print为list of matrices
>>> print(np.arange(0,4))[0 1 2 3]>>> print(np.zeros((2,2)))[[ 0. 0.] [ 0. 0.]]>>> print(np.random.randint(0,10,(3,3)))[[4 3 2] [5 9 3] [1 5 4]]
二:对数组的基本操作
1.代数运算:+,-,×(这里是各对应元素相乘,不是矩阵乘法)
>>> a=np.arange(0,4).reshape((2,2))>>> aarray([[0, 1], [2, 3]])>>> b=a*a>>> barray([[0, 1], [4, 9]])>>> a+barray([[ 0, 2], [ 6, 12]])>>> a-barray([[ 0, 0], [-2, -6]])2.矩阵乘法:np.dot(a,b)
>>> np.dot(a,b)array([[ 4, 9], [12, 29]])若参数为两个一维数组,则可看成是两个向量的点乘
>>> np.dot(np.array([1,2,3]),np.array([1,3,6]))25
注意:当两个类型不同的数组进行运算后,结果将是更一般的类型。
>>> c=np.arange(4)#np.arange()默认类型为np.int32>>> d=np.linspace(0,3,4)#np.linspace()默认类型为np.float64>>> c+darray([ 0., 2., 4., 6.])>>> (c+d).dtypedtype('float64')
>>> aarray([[0, 1], [2, 3]])>>> barray([[0, 1], [4, 9]])>>> a<barray([[False, False], [ True, True]], dtype=bool)>>> a==barray([[ True, True], [False, False]], dtype=bool)
4.ndarray class中有许多函数实现了对数组对一元运算。比如求数组中的最大值,最小值,所有元素之和等
>>> aarray([[0, 1], [2, 3]])>>> a.sum() #所有元素之和6>>> a.sum(axis=0) #列相加array([2, 4]) >>> a.sum(axis=1) #行相加array([1, 5])>>> a.max()#所有元素中对最大值3>>> a.max(axis=0) #各列最大值array([2, 3])>>> a.max(axis=1) #各行最大值array([1, 3])
5.Universal Functions(ufunc)
比如sqrt,sin,cos,exp,max,min,argmax,argmin,sum,trace等等
,这个参见另一篇博文,专门介绍numpy的universal function
三:索引(indexing),切片(slicing),迭代(iterating)
1.一维数组对索引,切片和迭代跟python中对list对操作一样。
>>> a=np.arange(10)>>> a[5]5>>> a[5:]array([5, 6, 7, 8, 9])>>> a[5:10:2]array([5, 7, 9])>>> for i in a[:3]:... print(i)... 012
>>> a=np.arange(6).reshape(2,3)>>> aarray([[0, 1, 2], [3, 4, 5]])>>> a[1,1]4>>> a[:,:2]array([[0, 1], [3, 4]])
>>> for row in a:... print(row)... [0 1 2][3 4 5]
array.ravel(),array.reshape(a,b),a.T(),array.resize(a,b) (只有resize()会直接改变数组)
>>> aarray([[0, 1, 2], [3, 4, 5]])>>> a.ravel()array([0, 1, 2, 3, 4, 5])>>> aarray([[0, 1, 2], [3, 4, 5]])>>> a.reshape(3,2)array([[0, 1], [2, 3], [4, 5]])>>> a.Tarray([[0, 3], [1, 4], [2, 5]])>>> a.resize(3,2)>>> aarray([[0, 1], [2, 3], [4, 5]])
np.vstack(a,b):垂直方向合并; np.vsplit(a,n):垂直方向分割
np.hstack(a,b):水平方向合并; np.hsplit(a,n):水平方向分割
>>> np.vstack((np.zeros((2,2)),np.ones((2,2))))array([[ 0., 0.], [ 0., 0.], [ 1., 1.], [ 1., 1.]])>>> np.hstack((np.zeros((2,2)),np.ones((2,2))))array([[ 0., 0., 1., 1.], [ 0., 0., 1., 1.]])
>>> a=np.arange(12).reshape(2,6)>>> aarray([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]])>>> np.hsplit(a,2)[array([[0, 1, 2], [6, 7, 8]]), array([[ 3, 4, 5],
0 0
- Numpy 入门
- numpy入门
- Numpy入门
- numpy:入门
- NumPy基础入门学习
- python+opencv+numpy入门
- [python]Numpy快速入门
- NumPy快速入门
- [NumPy]入门-学习笔记
- numpy入门1
- numpy入门学习笔记
- numpy简单入门学习
- numpy入门总结
- numpy入门2
- NumPy快速入门
- Numpy快速入门
- numpy的简单入门
- NumPy 基础入门
- Java基础学习
- websocket
- win10共享文件夹
- error C2664: “LoadLibraryW”: 不能将参数 1 从“const char [21]”转换为“LPCWSTR”
- 数据结构与算法描述第(第二章示例)
- numpy:入门
- Java GUI编程——在线聊天室
- 1.13 06 循环数
- from __future__ import absolute_import用法心得小结
- 两会万花筒:人民政协报剪报
- 对一副扑克牌(大小王除外)运用洗牌算法洗牌--C语言版
- \n与\n\r的区别
- Cracking the coding Interview: ListNode
- 偷来的三分算法(苟神)