Numpy是一个Python科学计算的基础模块,Numpy不但能够完成科学计算的任务,也能够被用作有效的多位数据容器,这使得Numpy可以无缝并快速的整合各种数据;
1、 Numpy对象ndarray
Numpy中定义的最重要的对象称为ndarray的N维数组类型,它描述相同类型的元素集合,可以使用基于零的索引访问集合中的项目;
Ndarray中的每个元素在内存中使用相同大小的块。
注:这里需要与列表进行区分,list中并没有限制数据的类型,list中可以同时包含有字符、列表、元组等,但Numpy中生成的ndarray对象是相同元素的集合;
2、 创建数组
Numpy有多种方法可用于创建数组,一下对各种方法进行列举:
array
创建数组使用array方法,array方法的参数如下:
array(p_object,dtype = None, copy = True,order = ‘K’, subok = False, ndmin = 0)
相关参数的功能如下:
p_object :传入的数组对象,可以是list、tuple等
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.array([1,2,3,4,5,6]) arr2 = np.array((1,2,3,4,5,6)) arr3 = np.array([1,2,3,4,5,6,'a']) # arr4 =np.array([1,2,3,4,5,6,(1,2,3,4,5)]) 不支持此种方式创建数组 # arr5 =np.array((1,2,3,4,5,6,(1,2,3,4,5))) 不支持此种方式创建数组 arr4 =np.array([[1,2,3,4,5,6],(1,2,3,4,5)]) arr5 =np.array(((1,2,3,4,5,6),(1,2,3,4,5))) print(arr1) print(arr2) print(arr3) print(arr4) print(arr5)
dtype:生成的数组的数据类型,选输
import numpy as np """创建数组""" print("""创建数组""") arr1 =np.array([1,2,3,4,5,6],dtype=np.int64) arr2 =np.array((1,2,3,4,5,6),dtype=np.float32) arr3 =np.array([1,2,3,4,5,6,'a'],dtype=np.str) print(arr1) print(arr2) print(arr3)
copy:对象是否被复制,默认为True,选输#经测试,为False时,暂时没明白有什么区别
import numpy as np """创建数组""" print("""创建数组""") arr1 =np.array([[1,2,3,4,5,6],[1,2,3,4,5,6]],copy= False) arr2 = arr1.copy() print(arr1) print(arr2) arr1 =np.array([[1,2,3,4,5,6],[1,2,3,4,5,6]]) arr2 = arr1.copy() print(arr1) print(arr2)
order:一共有4个值,分别为K – 不改变输入数据的排序方式;A - 不改变输入数据的排序方式;F – 按列;C – 按行;
subok:返回的数组被强制为基类数组,如果为True,则会返回子类数组;
ndmin:指定返回数组的最小维数
empty
使用empty创建数组:
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.empty((2,3)) print(arr1)
这里生成的数组中的数据是随机生成的;
zeros
使用zeros创建数组
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.zeros((2,3)) print(arr1)
ones
使用ones创建数组:
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.ones((2,3),dtype=int) print(arr1)
arange
使用arange创建,arange有四个参数,arange(start=None, stop=None, step=None, dtype=None):
Start指定了起始位置,stop指定了结束位置(不包含该值),step指定步长,默认为1;dtype指定数据类型;
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.arange(0,10).reshape((2,5)) print(arr1)
asarray
使用asarray创建数组
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.asarray([1,2,3]) print(arr1)
frombuffer
使用frombuffer创建数组
import numpy as np """创建数组""" print("""创建数组""") s = b'hello world' arr1 = np.frombuffer(s, dtype='S1', count=5, offset=6) print(arr1)
fromiter
使用fromiter创建数组
import numpy as np """创建数组""" print("""创建数组""") iterable = (x*x for x in range(5)) arr1 = np.fromiter(iterable,float)
linespace
使用linespace创建数组,linespace的参数为linspace(start, stop, num=50, endpoint=True, retstep=False,dtype=None)
Start和stop:指定了起始和结束位置
num:指定了数量
endpoint:指定是否包含结束位置的值,默认包含;
retstep:为True时,返回数组以及数组之间的步长;
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.linspace(0,9,10) print(arr1)
logspace
使用logspace创建数组
参数如下:
logspace(start, stop, num=50,endpoint=True, base=10.0, dtype=None)
和linespace基本类似,其中base指定了以10为底;
import numpy as np """创建数组""" print("""创建数组""") arr1 = np.logspace(1,2,2,base=2) print(arr1)
3、 ndarray的数据类型dtype
numpy的数据类型有多种,总结下来,分为以下几类,布尔型bool_,整形int,int型分8,16,32,64位的以及有符号和无符号的,浮点型数据float,float型分8、16、32、64位;复数型complex,complex分64位和128位;