1.numpy.reshape(a,newshape,order='C')
得到数组的形状
参数 :
a:需要重塑的数组
newshape: 新的数组的形状,如(3,2,1)表示三维数组中第三个维度有三个元素,其次2行,1列
order :{'C','F','A'}可选,其中C表示用类似C的索引顺序读取/写入元素。“ F”表示使用类似Fortran的索引顺序读取/写入元素。
例子:
#运行环境为Jupyter
arr1= np.array([[[1],[2]],[[3],[4]],[[5],[6]]])
#输出
'''
array([[[1],
[2]],
[[3],
[4]],
[[5],
[6]]])
'''
arr1.shape
#输出 (3,2,1)
arr1.reshape(1,2,3)
#输出
'''
array([[[1, 2, 3],
[4, 5, 6]]])
'''
2.numpy.transpose(a,axes = None)
将数组按照给定的轴进行转置
参数:
a:输入的数组
axes:按照什么轴顺序排列数组。例如三维数组默认按照(0,1,2)排列
例子:根据轴的顺序排列,索引的时候也相应变换。
arr = np.arange(16).reshape(2,2,4)
arr[0][1][2]
# 6
'''
#输出
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
'''
arr.transpose(0,1,2)
'''
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
'''
arr1 = arr.transpose(1,2,0)
'''
array([[[ 0, 8],
[ 1, 9],
[ 2, 10],
[ 3, 11]],
[[ 4, 12],
[ 5, 13],
[ 6, 14],
[ 7, 15]]])
'''
arr1[1][2][0]
# 6
3.numpy.where(condition[,x,y])
根据bool条件来过滤列表中的值
参数:
condition:条件,传入的bool型数组
x,y:当条件成立是,将x中的值输出,否在输出y的值
例子:
arr = np.arange(12).reshape(3,4)
'''
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
'''
arr1 = np.where(arr<6,arr,arr*2)
'''
array([[ 0, 1, 2, 3],
[ 4, 5, 12, 14],
[16, 18, 20, 22]])
'''
4.numpy.diff(a,n=1,axis=1,prepend =<no value>,append=<no value>)
计算矩阵一个轴上相邻数的差值,计算是按照创建数组时的数据类型来的。
参数:
a:输入的数组
n:默认为1,表示只计算一次相邻数的差值,当为2时,计算相邻数的差值的差值,依次类推
axis:指定轴,1表示行,0表示列
prepend:输入为一个数值,在原有的数组前加上一列同一数值的数,然后进行计算
append:在数组最后一列加上同一数值的数,进行计算
例子:
m = np.array([[ 1, 2, 5],[ 7, 9, 11],[13, 55, 17]])
'''
array([[ 1, 2, 5],
[ 7, 9, 11],
[13, 55, 17]])
'''
np.diff(m,n=1,axis=1)
'''
array([[ 1, 3],
[ 2, 2],
[ 42, -38]])
'''
np.diff(m,n=2,axis=1)
'''
array([[ 2],
[ 0],
[-80]])
'''
np.diff(m,axis=1,n=1,prepend=3)
'''
array([[ -2, 1, 3],
[ 4, 2, 2],
[ 10, 42, -38]])
'''
x = np.arange('1066-10-13', '1066-10-16', dtype=np.datetime64)
'''
array(['1066-10-13', '1066-10-14', '1066-10-15'], dtype='datetime64[D]')
'''
np.diff(x)
'''
array([1, 1], dtype='timedelta64[D]')
'''
5.其他常见函数及用法
'''1.随机生成一个二维数组'''
np.random.rand(3,3)
'''#2.矩阵相乘'''
arr_x = arr_x = np.array([[1, 2, 3], [4, 5, 6]])
arr_y = np.array([[1, 2], [3, 4], [5, 6]])
arr_x.dot(arr_y) '''# 等价于np.dot(arr_x, arr_y)'''
'''#3.唯一化及其他集合逻辑'''
arr = np.array([12, 11, 34, 23, 12, 8, 11])
np.unique(arr) '''# array([ 8, 11, 12, 23, 34])'''
np.in1d(arr, [11, 12])''' #是否包含该数组中的值'''
'''#array([ True, True, False, False, True, False, True])'''
'''#4.检索数组元素'''
arr = np.array([[1, -2, -7], [-3, 6, 2], [-4, 3, 2]])
np.any(arr > 0) '''#True # arr的所有元素是否有一个大于0'''
np.all(arr > 0) ''' #False # arr的所有元素是否都大于0'''
'''#5.数组排序'''
arr = np.array([[6, 2, 7], [3, 6, 2], [4, 3, 2]])
arr.sort()
arr.sort(0) ''' # 沿着编号为0的轴对元素排序'''
'''#6.数组统计运算'''
arr = np.arange(10)
arr.sum() '''# 求和'''
arr.mean() '''# 求平均值'''
arr.min() '''# 求最小值'''
arr.max() '''# 求最大值'''
arr.argmin() '''# 求最小值的索引'''
arr.argmax() '''# 求最大值的索引'''
arr.cumsum() '''# 计算元素的累计和'''
arr.cumprod() '''# 计算元素的累计积'''
np.floor([-0.6,-1.4,-0.1,-1.8,0,1.4,1.7]) '''#负数向左取整'''
'''#array([-1., -2., -1., -2., 0., 1., 1.])'''
np.ceil([1.2,1.5,1.8,2.1,2.0,-0.5,-0.6,-0.3])'''#取上限,找这个小数的最大整数'''
''' #array([ 2., 2., 2., 3., 2., -0., -0., -0.])'''
'''#7.通用函数'''
arr = np.array([4, 9, 16])
np.sqrt(arr) '''#开方'''
np.abs(arr) '''#求绝对值'''
np.square(arr) '''#求平方'''
x = np.array([12, 9, 13, 15])
y = np.array([11, 10, 4, 8])
np.add(x, y) '''# 计算两个数组的和'''
np.multiply(x, y) '''# 计算两个数组的乘积'''
np.maximum(x, y) '''# 两个数组元素级最大值的比较'''
np.greater(x, y) '''# 执行元素级的比较操作 #array([ True, False, True, True])'''
'''#8.索引'''
arr = np.array([[0., 1., 2., 3.],
[1., 2., 3., 4.],
[2., 3., 4., 5.],
[3., 4., 5., 6.]])
arr[0, 2] '''# 获取位于第0行第2列的元素'''
'''#2.0'''
arr[[0, 2]] ''' # 获取索引为[0,2]的元素 '''
'''#array([[0., 1., 2., 3.],'''
'''# [2., 3., 4., 5.]])'''
arr[[1, 3], [1, 2]] ''' # 获取索引为(1,1)和(3,2)的元素'''
'''#array([2., 5.])'''
arr[1:3,1:2] '''#array([[2.],'''
'''# [3.]])'''
'''#9.数据转换'''
data = np.array([[1, 2, 3], [4, 5, 6]])
data.dtype '''#查看数据类型 #dtype('int32')'''
data_one.dtype.name '''#'int32'''
float_data = data.astype(np.float64) '''# 数据类型转换为float64'''
'''#10.常见数据矩阵'''
np.zeros((3, 4)) '''#创建一个全0数组'''
np.ones((3, 4)) '''#创建全一数组'''
np.empty((5, 2)) '''# 创建全空数组,其实每个值都是接近于零的数'''
6.补充
#1
chararray.itemsize '''#一个数组元素的长度(以字节为单位)'''
chararray.size '''数组中元素的数量'''
x = np.array([1,2,3], dtype=np.float64)
x.itemsize '''# 8'''
x.size '''# 3'''
#2
z = z[::-1] '''将数组反转(第一个变成最后一个)'''
chararray.nonzer() '''返回非零元素的索引'''
#3
'''生成单位矩阵'''
numpy.eye(N,M = None,k = 0,dtype = <class'float'>,order ='C')#
'''N 输出的行数'''
'''M 输出的列数,默认为N '''
'''k 0表示主对角线,正值表示上对角线,负值表示下对角线'''