zoukankan      html  css  js  c++  java
  • Python之二维数组(list与numpy.array)

    1、python中的二维数组,主要有list和numpy.array两种 

     1 >>import numpy as np
     2  
     3 >>a=[[1,2,3],[4,5,6],[7,8,9]]
     4 >>a
     5 [[1,2,3],[4,5,6],[7,8,9]]
     6 >>type(a)
     7 <type 'list'>
     8  
     9 >>b=np.array(a)"""List 转为 array"""
    10 >>type(b)
    11 <type 'numpy.array'>
    12 >>b
    13 array=([[1,2,3],
    14         [4,5,6],
    15         [7,8,9]])

    2、list对应的索引输出情况:

     1 >>a[1][1]
     2 5
     3  
     4 >>a[1]
     5 [4,5,6]
     6  
     7 >>a[1][:]
     8 [4,5,6]
     9  
    10 >>a[1,1]"""相当于a[1,1]被认为是a[(1,1)],不支持元组索引"""
    11 Traceback (most recent call last):
    12   File "<stdin>", line 1, in <module>
    13 TypeError: list indices must be integers, not tuple
    14 >>a[:,1]
    15  
    16 Traceback (most recent call last):
    17   File "<stdin>", line 1, in <module>
    18 TypeError: list indices must be integers, not tuple
    >>b[1][1]
    5
     
    >>b[1]
    array([4,5,6])
     
    >>b[1][:]
    array([4,5,6])
     
    >>b[1,1]
    5
     
    >>b[:,1]
    array([2,5,8])

    4、先看一段代码

    先看一段代码
    >>array = [0, 0, 0]
    >>matrix = [array*3]
    ## [[0,0,0,0,0,0,0,0,0]]
    这段代码其实没有新建一个二维数组
    再看一段代码
    >>array = [0, 0, 0]
    >>matrix = [array] * 3
    ## [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
     
    咋一看这段代码应该创建一个二维数组了
     
    测试一下
     
    >>matrix[0][1] = 1
    >>print matrix
    ## [[0, 1, 0], [0, 1, 0], [0, 1, 0]]
     
    照理matrix[0][1]修改的应该只是二维数组中的一个元素,但是测试结果表明,修改的是每个List的第二个元素。

    matrix = [array] * 3操作中,只是创建3个指向array的引用,所以一旦array改变,matrix中3个list也会随之改变。

  • 相关阅读:
    linux常用操作命令
    golang的goroutine调度机制,GC机制
    数据库原理
    linux各文件夹的作用
    c++面试题
    EF 新增数据时提示it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element
    EF 批量插入,sqlhelper 批量插入
    C# 自己用到的几个参数转换方法
    asp.net MVC EF Where 过滤条件怎么写
    EF Code First 数据迁移命令
  • 原文地址:https://www.cnblogs.com/cuc-lyp/p/13904472.html
Copyright © 2011-2022 走看看