说明: numpy默认Ndarray所有元素的类型相同,如果列表中存在不同类型,会统一成同一类型,其优先级为:str>float>int
array()函数创建:
函数作用:创建Ndarray数组对象。
函数原型:numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
| 参数 | 描述 |
|---|---|
| object | 数组或嵌套的数列 |
| dtype | 可选参数,数组元素的数据类型 |
| copy | 可选参数,对象是否需要复制 |
| order | 创建数组的样式,包括行方向(C),列方向(F),任意方向(A,默认值),内存中存储元素的顺序 |
| subok | 默认返回一个与基类类型一致的数组 |
| ndmin | 指定生成数组的最小维度 |
# 一维数组
import numpy as np
arr = np.array([1,2,3])
print(arr)
print(type(arr))
'''
输出:
[1 2 3]
<class 'numpy.ndarray'>
arr输出内容看起来和Python中的列表一样,但是从输出type中可以知道其实是numpy.ndarray对象。
'''
# 默认元素类型相同
import numpy as np
arr = np.array([1,3,4,5,6.1])
print(arr) # 所有的int都会变成flot
'''
输出:
[1. 3. 4. 5. 6.1]
'''
# 多维数组
import numpy as np
arr = np.array([[1,3],[5,6]])
print(arr)
'''
输出:
[[[1 3]
[5 6]]]
'''
# 多维数组
import numpy as np
#规定最小维度。不设ndmin时,创建的就是一维数组
arrA = np.array([1,2,3,4,5,6],ndmin=2)
print(arrA)
'''
输出一个元素的二维数组:
[[1 2 3 4 5 6]]
'''
# dtype参数,规定数组中元素的类型
import numpy as np
arr = np.array([1,2,3],dtype='f')
print(arr)
arr = np.array([1,2,3],dtype=np.float32)
print(arr)
'''
输出:
[1. 2. 3.]
[1. 2. 3.]
'''
import numpy as np
# 结构化数据类型,注意不要用成np.array,执行后会提示:data type not understood
employee = np.dtype([("name","S20"),("los","i4"),("performance","f4")])
arr = np.array([("sunck", 28, 99.999),("kaige", 18, 33.39)],dtype=employee)
arr
'''
输出:
array([(b'sunck', 28, 99.999), (b'kaige', 18, 33.39 )],
dtype=[('name', 'S20'), ('los', '<i4'), ('performance', '<f4')])
'''
asarray()函数创建:
作用:和numpy.array函数类似,但比numpy.array少几个参数。
函数原型:numpy.asarray(a, dtype=None, order=None)
| 参数 | 描述 |
|---|---|
| a | 任意形式输入参数,列表、列表的元组、元组、多维数组等 |
| dtype | 可选参数,数据类型 |
| order | 创建数组的样式,包括行方向(C),列方向(F),内存中存储元素的顺序 |
import numpy as np
arr = np.asarray([1,2,3]) # 列表
arr = np.asarray((1,2,3)) # 元组
arr = np.asarray([(1,2),(3,4,5)]) # 列表多元组
arr = np.asarray([1,2,3],dtype='f')
# arr 可输出对比
empty()函数创建:
作用:创建一个指定数据类型(dtype)、形状(shape)且未初始化的数组
原型:empty(shape, dtype=float, order='C')
| 参数 | 描述 |
|---|---|
| shape | 数组形状 |
| dtype | 数据类型,可选 |
| order | 创建数组的样式,包括行方向(C),列方向(F),内存中存储元素的顺序 |
import numpy as np
arr = numpy.empty([2,2],dtype=int)# 两行两列
print(arr) # 每次执行输出的值可能很小或很大,系统不同得到的值不一样。未初始化的值未必是0
'''
输出:
[[-9223372036579159060 4409867976]
[ 4396684576 -9223372036579159035]]
'''
zeros()函数创建:
作用:创建指定大小的数组,创建后数组元素默认是0。
原型:同empty
import numpy as np
arr = np.zeros([2,3],dtype=int)
# 结构化数据类型
arr = numpy.zeros([2,3,3],dtype=[('x','i4'),('y','f'),('z','S')])
ones()函数创建:
作用:和numpy.zeros类似,但ones函数使用1来填错初始值。
full()函数创建:
作用:创建指定形状的数组,数组元素用参数fill_value来填充。
原型:
| 参数 | 描述 |
|---|---|
| shape | 数组形状 |
| fill_value | 填充数据 |
| dtype | 数据类型 |
| order | 'C'用于C的行数组,'F'用于FORTRAN的列数组 |
import numpy as np
arr = numpy.full([2,2],fill_value=32,dtype=int)
eye()函数创建:
作用:对角线元素值为1,其他元素为0
原型:numpy.eye(N, M=None, k=0, dtype=<class 'float'>, order='C')
| 参数 | 描述 |
|---|---|
| N | 指定行数 |
| M | 指定列数,默认和行数相等 |
| k | 对角元素的索引,如k=1,指定第二个元素画为对角线。 |
| dytpe | 数据类型 |
| order | 'C'用于C的行数组,'F'用于FORTRAN的列数组 |
import numpy as np
arr = numpy.eye(5,dtype=int)
arange()函数创建:
作用:根据start和stop指定数值范围,通过step步长,创建一个ndarray对象。
| 参数 | 描述 |
|---|---|
| start | 起始值,默认为0 |
| stop | 终止值(不包含) |
| step | 步长,默认为1 |
| dtype | 返回ndarray的数据类型,如没有指定,则默认使用输入的数据类型 |
import numpy as np
arr = numpy.arange(1,6,2)
frombuffer()函数创建:
作用:用于实现动态数组,接受buffer输入参数,以流的形式读入转化成ndarray对象,需要注意是:buffer为str时,Python3默认str是Unicode类型,需要在str前加b,转成bytestring。
函数原型:frombuffer(buffer, dtype=float, count=-1, offset=0)
| 参数 | 描述 |
|---|---|
| buffer | 可以是任意对象,会以流的形式读入,注意str类型转换 |
| dtype | 返回数组的数类型,可选 |
| count | 读取的数据量,默认读取所有数据(-1) |
| offset | 读取的起始位置,默认为0,指定时需注意与count、buffer长度之间的关系 |
import numpy as np
test = b"debug me"
arr = numpy.frombuffer(test,dtype='S1',count=5,offset=2)#str类型,每个长度为1。
fromiter()函数创建:
作用:从迭代对象中建立ndarray对象,返回一维数组。
函数原型:fromiter(iterable, dtype, count=-1)
| 参数 | 描述 |
|---|---|
| iterable | 可迭代对象 |
| dtype | 返回数组的数据类型,可选 |
| count | 读取的数据量,默认读取所有数据(-1) |
import numpy as np
lst = [1,2,3]
lst1 = iter(lst)
print(type(lst1),lst1)
arr = np.fromiter(lst1,dtype='f')#一定要指定dtype,因为dtype没有默认值
linspace()函数创建:
作用:创建一个由等差数列构成的一维数组。
函数原型:numpy.np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
| 参数 | 描述 |
|---|---|
| start | 序列的起始值 |
| stop | 序列的终止值,当endpoint==True时,该值包含在数列中 |
| num | 要生成的等步长的样本数量,默认为50 |
| endpoint | 默认为True,为True时,stop参数值包含在数列中 |
| retstep | 默认为False,为False时,生成的数组中不会显示间距 |
| dtype | 返回数组的数据类型,可选 |
import numpy as np
arr = np.linspace(1,10,10,dtype='i4')
logspace()函数创建:
作用:创建一个等比数列数组
函数原型:numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
| 参数 | 描述 |
|---|---|
| start | 序列的起始值为:base ** start |
| stop | 序列的终止值为:base ** stop,当endpoint==True时,该值包含在数列中 |
| num | 要生成的等步长的样本数量,默认为50 |
| endpoint | 默认为True,为True时,stop参数值包含在数列中 |
| base | 对数log的底数,默认为10 |
| dtype | 返回数组的数据类型,可选 |
import numpy as np
arr = np.logspace(1,10,10,dtype='f',base=2)
random.rand()函数创建
作用:生成[0,1)之间的随机数
函数原型:rand(d0, d1, ..., dn)
# 一维数组
import numpy as np
arr = np.random.rand()
print(arr)
arr = np.random.rand(3)
print(type(arr),arr)
# 二维数组
arr = np.random.rand(2,3)
# 三维数组:3个元素、3行、2列。
arr = np.random.rand(3,3,2)
random.random()函数创建:
作用:生成[0,1)之间的随机数,只能传一个参数。
函数原型:random(size=None)
| 参数 | 描述 |
|---|---|
| size | 元素个数 |
import numpy as np
arr = np.random.random()
print(arr)
arr = np.random.random(3)
print(type(arr),arr)
# 这行代码会报错,random只能传一个参数
#arr = np.random.random(2,3)
random.randint()函数创建:
作用:生成随机数
函数原型:randint(low, high=None, size=None, dtype='l')
| 参数 | 描述 |
|---|---|
| low | 包含的下限 |
| ligh | 不包含的上限 |
| size | 元素个数 |
| dtype | 元素类型 |
import numpy as np
arr = np.random.randint(1,9,5)
random.randn()函数创建:
作用:返回一个或一组样本,具有标准正态分布。
标准正态分布:又称u分布,是以0为均值,以1为标准差的正太分布,记为:N(0,1)
函数原型:rand(d0, d1, ..., dn)
import numpy as np
arr = np.random.randn()
print(arr)
arr = np.random.randn(2)
print(arr)
arr = np.random.randn(2,3)
print(arr)
arr = np.random.randn(2,3,2)
print(arr)
random.normal()函数创建:
作用:生成高斯分布的概率密度随机数
函数原型:normal(loc=0.0, scale=1.0, size=None)
| 参数 | 描述 |
|---|---|
| loc | 浮点型,此概率分布的均值(对应着整个分布的中心center) |
| scale | 浮点型,此概率分布的标准差(对应着分布的宽度,scale越大越矮胖,scale越小,越高瘦) |
| size | 输出的shape,默认为None,只输出一个值 |
import numpy as np
# 可以自行调整loc,scale值,观察规律
arr = np.random.normal(loc=1,scale=2,size=8)
能够创建Ndarray对象的方法,这些函数无所谓常不常用,根据实际应用场景选择,学习笔记,仅供参考。如有错误之处,还望各路大佬指出,hhh~。