Numpy基本操作-reshape,transpose,where,diff

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表示主对角线,正值表示上对角线,负值表示下对角线'''
                   

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值