zoukankan      html  css  js  c++  java
  • Python数据分析:Numpy学习笔记

    Numpy学习笔记

    ndarray多维数组

    创建

    import numpy as np
    np.array([1,2,3,4])
    np.array([1,2,3,4,],[5,6,7,8])
    np.zeros(8)
    np.zeros(3,4)
    np.ones(4)
    np.one_like([1,2,3,4])
    np.empty((2,2,2))
    np.arange(10)
    
    

    数组创建函数

    • arange
    • ones/ones_like
    • zeros/zeros_like
    • empty/empty_like
    • eye/identity

    属性

    • ndim: 轴的个数
    • shape: 数组的维度
    • size: 元素总个数
    • dtype: 数据类型
    • itemsize: 每个元素的字节大小

    数据类型

    • float
    • int
    • complex
    • bool
    • string_
    • object

    类型转换

    attr1.astype(np.float64)  # np.float64和'float64'都可以
    attr1.astype('string_')
    attr1.astype('int32')
    

    数组变换

    • reshage: 变换
    • flattern: 扁平
    • ravel: 散开
    arr1 = np.arrary(9)
    arr.reshape((3,3))
    arr.reshape((3, -1))  # -1根据数据数据本身/3决定
    

    3种变换(数据重塑)都不会修改原数组

    • concatenate: 合并
    • split: 拆分
    arr1 = np.arrage(12).reshape(3, 4)
    arr2 = np.arrange(12,24).reshape(3,4)
    np.concatenate([arr1, arr2], axis=0)  # 相当于np.vstack([arr1, arr2])
    np.concatenate([arr1, arr2], axis=1) # 相当于np.hstack([arr1, arr2])
    np.split(arr1, [2, 4])
    
    • transpose: 数组转制(只支持2维)
    • swapaxes: 轴对换(支持多维)
    arr1 = np.arange(12).reshape(3,4)
    arr1.transpose((1,0))  # 相当于 arr1.T
    
    arr2 = np.arrage(16).reshape(2,2,4)
    arr2.swapaxes(1,2) # 交换y,z轴
    

    随机函数(random)

    • rand: 均匀分布的样品值
    • randint: 随机整数
    • randn: 平均数为0, 标准差为1的正态分布随机数
    • normal: 指定平均数和标准差的正态分布数组
    • seed: 随机种子
    • permutation: 随机排序, 不改变原数组
    • shuffle: 随机排序,改变原数组
    • uniform(low, high, size): 均匀分布的数组
    • poisson(lam, size): 泊松分布数组
    arr1 = np.random.randint(100, 200, size=(5,4))
    np.random.randn(2,3,5)
    np.random.normal(4,5,size=(3,5))
    np.random.permutation(arr1)
    np.random.shuffle(arr1)
    

    数组的索引和切片

    • 索引支持多维索引arr1[2,3] 或arr1[2][3]
    • 索引值为原数组的视图, 修改arr1[2,3]会修改原数组(如并不想修改需使用arr1[2,3].copy())
    • 切片支持多维切片arr1[2:, :-1]
    • 布尔型索引 datas[fruits==0] = 1 # 筛选赋值
    • 花式索引: arr[np.ix_([3,2],[2,1]) # arr[[3,2]][:,[2,1]]

    数组运算

    标量运算

    arr1 = np.array([1, 2, 3])
    arr1 * 10
    arr1 * arr1
    arr1 - arr1
    

    通用函数

    • abs: 绝对值
    • square: 平方
    • add: 两个数组相加
    • minimum: 计算最小值
    • modf: 分割整数部分和小数部分

    可以指定axis轴

    条件逻辑运算

    • np.where(cond, arr1, arr2) # 类似3元表达式

    统计运算

    • sum: 求和
    • mean: 求算术平均数
    • std/var: 求标准差/方差
    • min/max: 最小数/最大数
    • argmin/argmax: 最小数/最大数索引
    • cumsum: 所有元素的累加和
    • cumprod 所有元的累计积
    • all/any: 布尔类型运算

    集合运算

    • np.unique: 找出所有唯一值,并排序
    • np.inld: 是否包含指定的值
    • np.intersect1d: 公共元素
    • np.union1d: 并集
    • np.setdiff1d: 差集
    • setxor1d: 交集取反

    线性代数

    • np.dot: 点积
    • from numpy.linalg import det ...

    数组存取

    • np.loadtxt: 读取
    arr1 = np.loadtxt('1.csv', delimiter=',')
    

    示例: 图像变换

  • 相关阅读:
    [CareerCup] 1.4 Replace Spaces 替换空格
    [CareerCup] 1.3 Permutation String 字符串的排列
    Android @1x,@2x,@3x 资源文件自动分包工具
    Android 使用xml实现边框阴影,背景渐变效果(附有RGB颜色查询对照表)
    Android中快速实现自定义字体!
    Android AS升级3.1 编译报错:The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin.
    Android getRunningTasks和getRunningAppProcesses失效
    Android 实现朋友圈有图片和视频
    Android 仿微信朋友圈拍小视频上传到服务器
    Android setUserVisibleHint-- fragment真正的onResume和onPause方法
  • 原文地址:https://www.cnblogs.com/superhin/p/11454725.html
Copyright © 2011-2022 走看看