zoukankan      html  css  js  c++  java
  • numpy基础3通用函数等

      1 # coding: utf-8
      2
      3 # 通用函数:快速的逐元素数组函数
      4 
      5 # 通用函数,也可以称为ufunc,是一种在ndarray数据中进行逐元素操作的函数
      6 import numpy as np
      7 arr = np.arange(10)
      8 arr
      9 
     10 # 简单的逐元素转换,sqrt,exp函数,为一元通用函数
     11 # sqrt,开根号
     12 np.sqrt(arr)
     13 
     14 #exp函数
     15 np.exp(arr)
     16 
     17 # 二元通用函数,比如add,maximum接收两个数组并返回一个数组的结果
     18 x = np.random.randn(8)
     19 x
     20 y = np.random.randn(8)
     21 y
     22 
     23 # 逐个元素地将x和y中元素地最大值计算出来
     24 np.maximum(x, y)
     25 
     26 # 返回多个数组的通用函数,如modf,返回浮点值数组的小数部分和整数部分
     27 arr = np.random.randn(7)*5
     28 arr
     29 
     30 remainder, whole_part = np.modf(arr)
     31 remainder
     32 whole_part
     33 
     34 # 通用函数接收一个可选参数out,允许对数组按位操作
     35 arr
     36 np.sqrt(arr)
     37 np.sqrt(arr, arr)
     38 arr
     39 
     40 
     41 # 使用数组进行面向数组编程
     42 
     43 # 示例 想要对一些网格数据来计算函数sqrt(x^2+y^2)的值,np.meshgrid函数接收两个一维数组,并根据两个数组的所有(x,y)对生成一个二维矩阵
     44 points = np.arange(-5, 5, 0.01)
     45 xs, ys = np.meshgrid(points, points)
     46 xs
     47 ys
     48 z = np.sqrt(xs ** 2 + ys ** 2)
     49 z
     50 
     51 # 使用matplotlib生成二维数组的可视化
     52 import matplotlib.pyplot as plt
     53 plt.imshow(z, cmap = plt.cm.gray);plt.colorbar()
     54 plt.title("Image plot of $sqrt{x^2 + y^2}$ for a grid of values")
     55 
     56 #将条件逻辑作为数组操作
     57 # numpy.where函数是三元表达式x if condition else y 的向量化版本
     58 xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
     59 yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
     60 cond = np.array([True, False, True, True, False])
     61 result = np.where(cond, xarr, yarr)
     62 result
     63 
     64 # 典型用法,根据一个数组生成一个新的数组,如将其中的正值替换为2,负值替换为-2
     65 arr = np.random.randn(4, 4)
     66 arr
     67 arr > 0
     68 np.where(arr > 0, 2, -2)
     69 np.where(arr > 0, 2, arr)# 仅将正值设为2
     70 
     71 #  数学和统计方法
     72 arr = np.random.randn(5, 4)
     73 arr
     74 arr.mean()
     75 np.mean(arr)
     76 arr.sum()
     77 # mean,sum等函数可以接受一个可选参数axis,
     78 #用于计算给定轴向上的统计值,形成一个下降一维度的数组
     79 #arr.mean(1)计算每一列的平均值,arr.sum(0)计算行轴向的累和
     80 arr.mean(axis=1)
     81 arr.sum(axis=0)
     82 # 其他方法,cumsum,cumprod不会聚合,会产生一个中间结果
     83 arr = np.array([0, 1, 2, 3, 4, 5, 6, 7])
     84 arr.cumsum()
     85 # 在多维数组中,cumsum累积函数返回相同长度的数组,可以在指定轴向上根据较低维度的切片进行部分聚合
     86 arr = np.array([[0, 1, 2], [3, 4, 5],[6, 7, 8]])
     87 arr
     88 arr.cumsum(axis=0)
     89 arr.cumprod(axis=1)
     90 
     91 #  布尔值数组的方法
     92 arr = np.random.randn(100)
     93 (arr > 0).sum()
     94 
     95 # 两个方法,any,all.any检查数组中是否至少有一个True,all检查是否每个值都是True
     96 bools = np.array([False, False, True, False])
     97 bools.any()
     98 bools.all()
     99 
    100 #  排序
    101 arr = np.random.randn(6)
    102 arr
    103 arr.sort()
    104 arr
    105 
    106 arr = np.random.randn(5, 3)
    107 arr
    108 
    109 arr.sort(1)
    110 arr
    111 
    112 # 针对一维ndarray的基础集合操作,常用一个方法 np.unique,返回的是数组中唯一值排序后形成的数组
    113 names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
    114 np.unique(names)
    115 
    116 ints = np.array([3, 3, 3, 2, 2, 1, 1, 4, 4])
    117 np.unique(ints)
    118 
    119 # np.in1d 可以检查一个数组中的值是否在另外一个数组中,并返回一个布尔数组
    120 values = np.array([6, 0, 0, 3, 2, 5, 6])
    121 np.in1d(values, [2, 3, 6])

    参考书籍:利用 python 进行数据分析

    作者:舟华520

    出处:https://www.cnblogs.com/xfzh193/

    本文以学习,分享,研究交流为主,欢迎转载,请标明作者出处!

  • 相关阅读:
    Blazor Webassembly本地化的实现
    一分钟搞清C++中的指向常量的指针和常量型指针
    如何使新Edge和旧Edge并行使用
    Build 2020上公布的C# 9.0 新特性
    C# 8.0 新特性之二:接口默认实现
    如何用代码来快速批量下载人教社中小学电子教材
    三大常用数据库事务详解之三:事务运行模式
    三大常用关系型数据库事务详解之二:基本事务命令
    三大关系型数据库事务详解之一:基本概念
    自然语言处理学习笔记之一:概要
  • 原文地址:https://www.cnblogs.com/xfzh193/p/11234287.html
Copyright © 2011-2022 走看看