zoukankan      html  css  js  c++  java
  • python的二维数组的切片避坑小结

    今天想在项目中使用二维数组遇到一些坑,做一个小结为以后避坑,主要是二维数组的生成和切片部分。

    (1)二维数组的切片

    二维数组有list和np.array 两种数据格式,但是它们的切片方式是完全不同的。

    import pandas as pd
    import numpy as np
    list = [[1,2,3],[4,5,6],[7,8,9]]
    list_nparr = np.array(list)
    
    list
    
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    
    list_nparr
    
    array([[1, 2, 3],
           [4, 5, 6],
           [7, 8, 9]])
    

    1.二维np.array的切片

    list_nparr[0:2,0:2]  # 按行列切片,中间用逗号隔开
    
    array([[1, 2],
           [4, 5]])
    

    2.二维list的切片

    • 只能每次只取一行切片,再循环
    [list[i][0:2] for i in range(0,3)]
    
    [[1, 2], [4, 5], [7, 8]]
    

    (2)数组的生成

    • 数组的复制 是对引用的复制
    m=3
    n=3
    l= [[0]*m]*n
    l
    
    [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
    
    l[0][0]=3
    l
    
    [[3, 0, 0], [3, 0, 0], [3, 0, 0]]
    

    可以看到[0]*3 实际上是对[0]进行了三次相同的引用。 改变其中一个引用,则3个都会发生改变。
    所以为避免上述情况,一般用列表生成式去生成二维数组。

    a = [[i for i in range(1,10)] for j in range(1,3)]
    a
    
    [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9]]
  • 相关阅读:
    Docker笔记
    Fedora dnf配置
    Vue杂谈
    各类技术集锦
    在.NET Core 里使用 BouncyCastle 的DES加密算法
    Srapy爬虫之必备知识
    scrapy爬虫之环境安装
    Git很简单--图解攻略
    Vue.js下载方式及基本概念
    ajax与jsonp定义及使用方法
  • 原文地址:https://www.cnblogs.com/laiyaling/p/11970839.html
Copyright © 2011-2022 走看看