python的二维数组的切片避坑小结

摘要:
今天,我想在项目中使用二维数组来满足一些陷阱,并对将来避免陷阱做一个总结,主要包括二维数组的生成和切片。(1) 2D阵列的切片2D阵列有两种数据格式:list和np.array,但它们的切片方法完全不同。importpandasaspdimportnumpyasnplist=[[1,9]list_nparr=np.array(列表)列表[[1,9]列表_nparrray([[1,

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

(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]]

免责声明:文章转载自《python的二维数组的切片避坑小结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF笔记(1.2 Navigation导航)——Hello,WPF!Oracle 修改序列步长下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

从O365中获取users到D365中 使用flow

在我上篇blog中讲解到了怎么用代码把O365 users 获取到D365中. 从O365中获取users到D365中  这几天一直在研究flow, 发现flow可以更简单的完成这个功能. 一开始没有考虑用flow是因为flow获取所有用户的方式比较困难, 需要有个workaround (首先需要把所有用户添加到一个group当中,然后获取group me...

js中不同值的替换

function(button, e) { debugger; // 中断调试指令,可以手动删除它 var me = this, //this为列表视图控制器 viewModel = me.getViewModel(),...

MVC中 DropDownList编辑默认选中的使用

MVC DropDownList编辑默认选中   DropDownList则与TextBox等控件不同,它使用的是select标记。它需要两个值:在下拉框中显示的列表,和默认选项。而自动绑定一次只能绑定一个属性,因此你需要根据需要选择是绑定列表,还是默认选项。 DropDownList扩展方法的各个重载版本“基本上”都会传递到这个方法上: ? pu...

java list按照元素对象的指定多个字段属性进行排序

ListUtils.java---功能类 package com.enable.common.utils;import java.lang.reflect.Field;import java.text.NumberFormat;import java.util.Collections;import java.util.Comparator;import j...

git第一节----git config配置

@查看git的版本   git --version @查看git配置信息   git config --list config list分全局和局部,在根目录下执行git config --list显示为全局配置,在git的仓库目录下执行,显示的是全局和局部的配置信息。 @配置git的全局邮箱和用户名使用   git config --global  us...

使用hibernate-jpamodelgen生成jpa的元模型

1.引入依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-jpamodelgen</artifactId> </dependency> 2.idea 的设置 在idea里设置a...