zoukankan      html  css  js  c++  java
  • 02 nupmpy_01 数组的创建与操作

    1. 数组的创建

    import numpy as np
    # 创建一维数组
    arr1 = np.array([1,2,3,4])
    arr1
    
    # 创建一个四行三列的二维数组
    arr2 = np.array([[1.1,2,3],[2,3,4],[5,6,7],[6,7,8]])
    arr2
    
    # 数组具有同质性,我们创建arr2的时候给他的数字有int,有float,输出数组会发现全都变成了float

    2. 数组元素的获取

    # 一维数组, 获取索引维2的数组
    arr1[2]
    
    #  一维数组,获取索引为1 和索引为3的元素
    arr1[[1,3]]
    
    # 二维数组,获取第三行第三列的数组 
    arr2[2,2]
    
    # 获取第三行的所有元素
    arr2[2,:]
    
    # 获取第二列所有元素
    arr2[:,1]
    
    # 获取第2至第4行,2至5列
    arr2[1:, 1:]
    
    # 获取第一行,最后一行, 第一列,最后一列构成的数组,
    # 对于这种不连续取行和列的情况我们要使用 np的ix_函数将索引封装一下
    arr2[np.ix_([0,-1],[0,-1])]

      说明:对于一维数组,可以直接使用列表元素的索引方式,同时还可以给索引传入一个列表,列表里边放你想要的元素的索引值

         对于二维数组,要用  [行索引, 列索引] 的方式,行或者列索引可以用 1:3 代表取索引维1 和 2 的行或列

         对于二维数组,要取不连续的行或者列索引的情况,要用 np.ix_() 函数封装一下。如 np.ix_([1,3,4],[2,4])  

    3.数组的常用属性

      对于从外部读入的数据,我们可以通过数组的属性来获取数组信息.如维度,行列数,值类型等信息

    3.1 读入数据

      

    arr = np.genfromtxt(fname='./a.csv', delimiter=',',skip_header=0, dtype='float')
    arr
    
    # 参数详解
    - fname : 指定需要导入的文件路径
    - dtype : 指定导入数据的数据类型,默认是float,如果数据集合中有字符串类型,则必须指定为str
    - delimiter: 指定数据集列分隔符
    - skip_header : 默认为0,不跳过首行
    
    # 查看属性:
    查看数据结构
    type(arr)
    查看维度
    arr.ndim 
    查看行列
    arr.shape
    查看数组元素数据类型
    arr.dtype
    查看数组元素个数
    arr.size

    4. 数组的形状处理 

    数组变形

    arr = np.array( [1,2,3],[10,20,30],[100,200,300],[2,3,4] )
    
    # 将arr变成2行6列的数组
    arr1 = arr,reshape(2,6)
    arr.resize(2,6)
    以上两种发发都能实现数组的变形,区别是reshape会返回一个新值,而resize在原数据基础上进行修改

    数组降维

    arr = np.array([[1,10,100],[2,20,200],[3,30,300]])
    # 默认行排序降维
    arr1 = arr.ravel()
    arr2 = arr.flatten()
    arr3 = arr.reshape(-1)
    # 按列排序
    arr1 = arr.ravel(order='F')
    arr2 = arr.flatten(order='F')
    arr3 = arr.reshape(-1, order='F')

    以上三种方式都能实现降维,区别是 ravel返回的是原数据的复制,对其进行修改不会影响原数据的值,而flatten和reshape是原数据的试图,对其修改会改变原数据的值

    数组堆叠

    arr1 = np.array([[0,0,0],[0,0,0],[0,0,0]])
    
    # 纵向数组堆叠
    np.vstack([arr,arr1])
    np.row_stack([arr,arr1])
    array([[   1, 1000, 3000],
           [4000,   20,  200],
           [   3,   30,  300],
           [   0,    0,    0],
           [   0,    0,    0],
           [   0,    0,    0]])
    # 横向数组堆叠 np.hstack([arr,arr1]) np.column_stack([arr,arr1])
    array([[   1, 1000, 3000,    0,    0,    0],
           [4000,   20,  200,    0,    0,    0],
           [   3,   30,  300,    0,    0,    0]])
  • 相关阅读:
    7.服务器上用命令ffprobe看流质量
    filebeat记录
    Dubbo 一篇文章就够了:从入门到实战
    c/c++系列的运算符优先级总结
    动态单链表的传统存储方式和10种常见操作-C语言实现
    代码的规范化—高质量程序的结构(一)
    动态分配的顺序线性表的十五种操作—C语言实现
    IOS开发初步
    大数据方面一个博客
    Task not found in root project
  • 原文地址:https://www.cnblogs.com/zhangjian0092/p/11817052.html
Copyright © 2011-2022 走看看