numpy - array(5)

np.random.seed(1)
arr1 = np.random.randint(0, 50, (2, 3, 5))
(1) def sort(a, axis=-1, kind=None, order=None)
        返回目标array在指定轴上的数据按自然序(从小到大)进行排序组成的array
属于快速排序,操作不对原array进行更改
a:目标array
axis 接受单个int或者None,默认值为-1,即对最深维度/最大维度进行排序,传None则将原array转成向量再进行操作
        arr_sort1 = np.sort(arr1)
        arr_sort2 = np.sort(arr1, 0)
        arr_sort3 = np.sort(arr1, axis=None)
(2)def argsort(a, axis=-1, kind=None, order=None)
        返回原array排序后的元素在原array上的索引组成的array
 a, axis用法同sort方法
        arr_argsort1 = np.argsort(a=arr1, axis=1)
(3)ndRRy.sort()
         排序操作直接对原array进行排序更改,没有返回值
 axis用法同sort方法
        np.random.seed(2)
        arr2 = np.random.randint(0, 50, (2, 3, 5))
        np.ndarray.sort(arr2, 1)
        print(arr2)
(4) array[::-1] 切片逆序:可指定维度进行逆序操作
        arr_reverse1 = arr_sort1[:, :, ::-1]
(5) def flip(m, axis=None) 返回目标array沿给定轴反转数组中元素的顺序的新array
 m:目标array
 axis:接受int或int数组或者None。默认值为None,沿所有轴进行反转
        arr_flip1 = np.flip(arr1)
        arr_flip2 = np.flip(arr1, 0)
        arr_flip3 = np.flip(arr1, (2, 1))
 (6) " == "  同型(结构相同)array进行逐个比对得到一个元素都是bool值的array(严格意义上的比对),或者array的每个元素与一个常数进行比对
        arr_bool1 = arr1 == arr_sort1
        arr_bool2 = arr1 == 23
(7) def allclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False)
 按照规则对两个array的元素进行逐个近似比对,如果所有比对值都为True 返回True,比对值有False则 返回False
 比对规则:满足|e1 - e2| <= (atol + rtol *|e2|) 则为True
 a, b:要比较的两个数组。
 rtol:相对容差,默认值为 1e-05。它是相对于 arr2 数组元素大小的容差。
 atol:绝对容差,默认值为 1e-08。它是无论 arr2 元素大小如何都适用的容差。
 equal_nan:布尔值,指示是否将 NaN视为相等。默认为 False。
        arr3 = np.array([(1, 2, 3), (4, 5, 6)])
        arr4 = np.array([(2, 3, 4), (5, 6, 7)])
        bool1 = np.allclose(arr3, arr4, atol=1)
        bool2 = np.allclose(arr3, arr4)
(8)def where(condition, x=None, y=None)
condition(条件):接受元素为bool值的array或者单个bool值。如果只传单个bool值,则会被转化为array进行操作。(bool以外其他类型值遵循强转原则,使用前需先确认)
 x,y:接受array或者None,根据condition的判断返回x或y
(1)当where参数只传了condition = target_array,则返回target_array的元素中为True的元素的各维度索引组成的元组(index_tuple)组成的元组(res_tuple)
 res_tuple的尺寸 = target_array的维度(个数)且 res_tuple的索引 与 target_array的维度一一对应
 index_tuple存储了target_array对应维度上的所有为True的元素的索引
        np.random.seed(1)
        arr5 = np.random.randint(-50, 50, (2, 3, 5))
        dim0s_1, dim1s_1, dim2s_1 = np.where(arr5)  
        arr6 = arr5 > 0
        dims2 = np.where(arr6)
        dim0s_2, dim1s_2, dim2s_2 = np.where(arr6)
        arr7 = np.array([True, 'a', False, True, False, False])
        arr8 = np.array([[True, 'a', '', False]])
        dims3 = np.where(arr7)[0]
        dims4 = np.where(arr8)
 (2)当where参数传了condition,又传了X,Y
    (2.1)当condition传单个值的时候,可接受bool、数字、None,不接受str
    (2.1.1)当X,Y都传单个值,condition为True返回X,condition为False返回Y
        
        res_single1 = np.where(None, None, 6)
    (2.1.2)当X,Y都传Array,那么X,Y必须是同形的。
    condition为True返回X,condition为False返回Y,(传元组或列表会自动转成array操作)
        res_single3 = np.where(2.5, (1, None), (5, 6))
    (2.1.3)当X,Y传不同形的array,那么会根据维度高的array进行同形转换,
    即维度低的array会作为元素填充到维度高的array结构中取代自己。

        res_single2 = np.where(2.5, None, arr8)
        res_single4 = np.where(0, arr5, 'x')
        res_single5 = np.where(2.5, (1, 2), [(5, 6), (7, 8)])
    (2.2)当condition传array的时候,array的元素不能是str
    (2.2.1)X,Y传单个值的时候,根据condition的元素判断进行填充,
    condition元素为True填充X,为False填充Y,
    得到一个condition同形的array并返回

        arr9 = np.array([True, None, False, True, False, False])
        res_arr1 = np.where(arr9, 1, None)
    (2.2.2)X,Y传array的时候,X,Y必须与condition同形,或者condition形状包含X,Y形状,
    根据condition的元素判断进行填充,condition元素为True填充X中位置相对应的元素,
    condition元素为False填充Y中位置相对应的元素,得到一个array并返回

        res_arr2 = np.where(arr6, arr5, arr1)
        res_arr3 = np.where(arr6, arr5, 0)
(9)numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)  用于计算向量或矩阵的范数。范数是衡量向量“大小”的一种方式,也可以用来衡量矩阵的“大小”。
 x:输入的数组,可以是向量或矩阵。
 ord:可选参数,指定范数的类型。默认值为 None,表示二范数(欧几里得范数)。
 其他常见的范数还包括:
     np.inf:无穷范数(最大绝对值)。
     1:一范数(绝对值之和)。
     -1:负一范数(最小绝对值)。
     2:二范数(欧几里得范数)。
     其他正整数:p范数(Lp范数)。
 axis:可选参数,指定计算范数的轴。对于矩阵,这可以用来计算行范数或列范数。
 keepdims:布尔值,指示是否保持数组的维度。默认为 False。
        arr10 = np.array([1, 2, 3])
 计算二范数
        print(np.linalg.norm(arr10))
 计算一范数
        print(np.linalg.norm(arr10, ord=1))
 计算无穷范数
        print(np.linalg.norm(arr10, ord=np.inf))
        arr11 = np.array([[1, 2], [3, 4]])
 计算矩阵的Frobenius范数(相当于计算矩阵元素平方和的平方根)
        print(np.linalg.norm(arr11))  # 输出:5.477225575051661
 计算矩阵的列范数
        print(np.linalg.norm(arr11, ord=2, axis=0))

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chris Rookie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值