1. 10、对ndarray的操作:一元函数、二元函数、聚合函数、三元函数_笔记
    2. # ndarray的一元函数
    3. # abs fabs 计算整数、浮点数、复数的绝对值,对于非复数,fabs更快
    4. # sqrt 计算各个元素的平方根 相当于arr**0.5 要求arr的每个元素必须非负数
    5. # square 计算各个元素的平方 相当于arr**2
    6. # exp 计算各个元素的指数e的x次方
    7. # log log10 log2 log1p 分别计算自然对数、底数为10、底数为2 以及log(1+x),要求arr中的每个元素必须为正
    8. # sign 计算各个元素的正负号 1为正数 -1为负数 0
    9. # ceil 计算各个元素的ceilling值 即大于等于该值的最小整数
    10. # floor 计算各个元素的floor值,即小于等于该值的最大整数
    11. # rint 各个元素的四舍五入到最接近的整数,保留dtype的类型
    12. # modf 将数组中元素的小数位和整数位以两部分独立数组的形式返回
    13. # isnan NaN(不是一个数字) 布尔类型数组
    14. # isfinite isinf 有穷的(非inf 非NaN)np.NaN np.inf 无穷的 布尔类型数组
    15. # cos cosh sin sinh tan tanh 普通以及双曲型三角函数
    16. # arccos arccosh arcsin arcsinh arctan arctanh 反三角函数
    17. # ndarray的二元函数
    18. # mod 元素级的取模%
    19. # dot 点积 矩阵积
    20. # greater greater_equal less less_equal equal not_equal 元素级的比较运算,最终返回一个布尔型数组
    21. # logical_and logical_or logical_xor
    22. # power 对数组中的每个元素执行给定次数的指数值
    23. # ndarray的聚合函数
    24. # 聚合函数的对一组值进行操作,返回一个单一值作为结果的函数
    25. # 常见的聚合函数有:平均值、最大值、最小值、方差等等
    26. # arr.min() arr.max() arr.mean() arr.std() arr.sum()
    27. # 方差公式:np.sqrt(np.power(arr-arr.mean(),2).sum()/arr.size)
    28. # 二维数组的情况下,axis=0表示对同列的数据进行聚合
    29. # axis=1 表示对同行的数据进行聚合
    30. # arr.mean(axis=0)
    31. # -*- coding: utf-8 -*-
    32. __author__ = 'dongfangyao'
    33. __date__ = '2017/12/23 下午9:54'
    34. __product__ = 'PyCharm'
    35. __filename__ = 'numpy8'
    36. import numpy as np
    37. arr = np.array([-2, 2, 4, -3, 100])
    38. # print(arr)
    39. # print(np.fabs(arr))
    40. arr1 = np.fabs(arr)
    41. # print(np.sqrt(arr1))
    42. # print(arr1**0.5)
    43. # print(np.square(arr1))
    44. # print(arr1**2)
    45. # print(np.exp(arr1))
    46. # print(np.sign(arr))
    47. arr2 = np.random.random((2, 3))
    48. # print(arr2)
    49. # print(np.modf(arr2))
    50. # print(np.nan)
    51. # print(np.inf)
    52. # print(np.sin(arr1))
    53. # print()
    54. # print(np.power(arr, arr1))
    55. # a = np.random.randint(2, 100, (3, 4, 5))
    56. a = np.array([[2, 3, 5, 6], [3, 4, 9, 1]])
    57. # print(a)
    58. # print(a.max(), a.min(), a.sum(), a.mean(), a.std())
    59. # print(np.sqrt(np.power(a.mean(), 2).sum()/a.size))
    60. # print(a.max(axis=1))
    61. # 三元函数 np.where x if condition else y
    62. a = np.array([[3, 5], [2, 8]])
    63. b = np.array([[1, 6], [4, 3]])
    64. # print(a)
    65. # print(b)
    66. # c = a > b
    67. # print(c)
    68. # print(a[c])
    69. condition = a > b
    70. # print(np.where(condition, a, b))
    71. print('-----')
    72. # print(np.array([[3, 6], [4, 8]]))
    73. c = np.array([[2, 3, np.nan], [4, 5, 8], [np.inf, np.nan, 33]])
    74. print(c)
    75. condition = np.isnan(c) | np.isinf(c)
    76. print(np.where(condition, 0, c))
    77. # 数据去重
    78. print('开始数据去重的例子')
    79. aa = np.random.randint(4, 9, (4, 4))
    80. print(aa)
    81. print(np.unique(aa))
    82. 复制代码
    83. # 引入三元:比如有a b两个数组 我需要将a b对应元素中较大的那个返回出来
    84. # np.where函数是三元表达式x if condition else y的矢量化版本
    85. # 例子:将数组中所有异常数字替换为0 比如将NaN替换为0
    86. # condition = np.isnan(arr) | np.isinf(arr)
    87. # np.where(condition, 0, arr)
    88. # 应用场景:数据去重
    89. # np.unique函数的主要作用是将数组中的元素进行去重操作(也就是只保存不重复的数据)默认会进行排序
    90. # aa = np.random.randint(4, 8, (4, 4))
    91. # print(aa)
    92. # print(np.unique(aa))