这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战
NumPy-快速上手
数组的创建
NumPy的特点是其N维数组对象ndarray。
ndarray是一系列同类型数据的集合。
ndarray对象用于存放同类型元素的多维数组。
import numpy as np
a=np.array([1,2,3])
print(a)
print(type(a))
创建区间数组
arange参数(初始值,结束值,步长) 不包含结束值
import numpy as np
a=np.arange(1,10,3)
print(a)
b=np.arange(1,10,0.5)
print(b)
创建二维数组
ndim 维度
shape 行数和列数
size 元素个数
import numpy as np
arr=np.array([[1,2],[4,5],[7,8]])
print(arr)
print(arr.ndim)
print(arr.shape)
print(arr.size)
指定每个维度的长度
ones为生成全1数组
import numpy as np
arr=np.ones(shape=(3,4,5))
print(arr)
数组属性
数组对象的常用属性有:ndim、shape、dtype、size和itemsize。
ndim用来返回数组的维度
shape用来返回数组的形状
dtype用来返回数组的数据类型
size用来返回数组中元素的个数
itemsize用来返回数组中每个元素占用的空间大小(以字节为单位)
import numpy as np
arr=np.array([[1,2],[3,6]])
print(arr.ndim)
print(arr.shape)
print(arr.dtype)
print(arr.size)
print(arr.itemsize)
数据类型
在创建数组时,可以使用dtype来指定数组中元素的类型。
没有指定元素的类型,则会根据元素类型进行推断。
若元素的类型不同,则会选择一种兼容的类型。
import numpy as np
a=np.array([1,5,9.0],dtype=np.float32)
b=np.array([1,'a',2])
print(a.dtype)
print(b.dtype)
astype( )进行类型转换
import numpy as np
a=np.array([1,5,9],dtype=np.string_)
print(a)
a=a.astype(np.uint)
print(a)
print(a.dtype)
reshape( )方法改变数组的形状。
import numpy as np
a=np.arange(15)
print(a)
b=np.reshape(a,(3,5))
print(b)
设置多维
维度-1表示自动计算该维度的大小
import numpy as np
a=np.arange(20)
print(a)
b=np.reshape(a,(-1,2,5))
print(b)
索引与切片
选取多个元素
import numpy as np
a=np.arange(20)
print(a)
print(a[0],a[10])
a=a.reshape((4,5))
print(a)
print(a[2,0])
切片返回的是原数组对象的视图
import numpy as np
a=np.arange(20)
b=a[0:5]
a[2]=33
print(a)
print(b)
如果希望数组能够实现真正的复制 copy( )返回数组的副本
import numpy as np
a=np.arange(20)
print(a)
b=a.copy()
b=b[0:5]
a[2]=33
print(a)
print(b)
条件索引
import numpy as np
a=np.arange(20)
print(a)
b=a[a%2==0]
print(b)
数组扁平化
ravel( )返回的是原数组的视图
flatten( )返回的是原数组的副本
import numpy as np
a=np.arange(15).reshape(3,5)
b=a.ravel()
c=a.flatten()
a[0,0]=1
print(a)
print(b)
print(c)
存储顺序
order参数来指定数组元素的存储顺序
import numpy as np
a=np.array([[1,2,3],[4,5,6]])
b=a.reshape((3,2),order="C")
c=a.reshape((3,2),order="F")
print(a)
print(b)
print(c)
函数
统计
当数组是二维数组时,axis=0按照竖直的方向进行统计, axis=1按照水平的方向进行统计
import numpy as np
a=np.array([[1,2,3],[4,5,6]])
print(np.sum(a,axis=0))
print(np.sum(a,axis=1))
常用的统计函数如下有:
①mean( )/sum( )/median( )。平均值/合/中位数
②max( )/min( )/amax( )/amin( )。最大值/最小值/最大值/最小值
③argmax( )/argmin( )/std( )/var( )。最大值的索引/最小值的索引/标准差/方差
④cumsum( )/cumprod( )。累加/累积
随机
常用的随机函数有:
①np.random.rand( )
②np.random.random( )
③np.random.randn( )
④np.random.normal( ) 高斯分布的概率密度函数
⑤np.random.randint( ) 随机整型数
⑥np.random.seed( ) 随机数种子
⑦np.random.shuffle( ) 随机排列
⑧np.random.uniform( ) 随机采样
import numpy as np
a=np.random.rand(2,2)
b=np.random.random(size=(2,2))
c=np.random.randn(2,2)
print(a)
print(b)
print(c)
连接
concatenate( )对多个数组按指定轴的方向进行连接
import numpy as np
a=np.arange(6).reshape((2,3))
b=np.arange(6).reshape((2,3))
print(a)
print(b)
print(np.concatenate((a,b),axis=0))
print(np.concatenate((a,b),axis=1))
其他
any( ):如果数组中有任何一个元素为True(或者能转换为True),则返回True,否则返回False。
all( ):如果数组中所有元素为True(或者能转换为True),则返回True,否则返回False。
transpose(T)函数在不指定参数时,默认是矩阵转置。
指定参数transpose((0,1))表示按照原坐标轴改变序列,也就是保持不变。
transpose((1,0))表示交换0轴和1轴。
import numpy as np
a=np.arange(6).reshape((3,2))
print(a)
print(a.transpose())