1 前言

使用切片访问矩阵的部分数据(特别是一行或一列数据)时,通常会出现切片维数怎么在瞎变化,以致于不得不用reshape()强制改变维数。在深度学习中,网络对矩阵维数的要求是非常严格的,往往就是这些看似不起眼的错误,导致整个程序崩溃。

2 numpy中切片

import numpy as np

a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=a[0,0]
c=a[0:2,0]
d=a[0,0:2]
e=a[0:1,0:1] print("a=",a)
print("b=",b)
print("c=",c)
print("d=",d)
print("e=",e)

运行结果:

变量空间:

可以看出,使用了冒号“:”就不会降维。比如:b没有使用“:”,变成0维,即数值;c,d只使用一个“:",变成1维,即向量;而e有2个地方使用“:”,仍为矩阵。

如果确实弄不清或担心出错,可以用reshape()进行强制转换,其中-1表示维数待定(=总元素个数/其他维度元素个数),如下:

c=c.reshape(-1,1)
d=d.reshape(1,-1)
print("c=",c)
print("d=",d)

运行结果:

变量空间:

3 list中切片

a=[[1,2,3],[4,5,6],[7,8,9]]
b=a[0][0]
c=a[0:2][0]
d=a[0][0:2]
e=a[0:1][0:1] print("a=",a)
print("b=",b)
print("c=",c)
print("d=",d)
print("e=",e)

运行结果:

变量空间:

和numpy中一样,使用了“:”就不会降维。

4 注意事项

  • list和numpy访问数据元素有所不同,list是一层一层的从外往里访问,每访问一层加一个“[ ]”,和C语言中的2维数组访问方式差不多,而numpy只用一个“[ ]”,层之间用“,”隔开。
  • list中没有reshape()函数,不能改变列表维度,除非使用先转换为numpy数组,调用reshape()函数,再转换为list,如下:
f=np.array(e).reshape(-1,1).tolist()
print("f=",f) # f= [[1], [2], [3]]

变量空间:

  • 如果不看变量空间,numpy数组可以通过a.shape属性和np.shape(a)函数查看数组维度,list只能通过len()函数查看列表第一维的维度,如下:
import numpy as np

a=np.array([[1,2,3],[4,5,6]])
b=[[1,2,3],[4,5,6]] print("a.shape=",a.shape)
print("np.shape(a)=",np.shape(a))
print("len(a)=",len(a)) print("len(b)=",len(b))
print("len(b[0])=",len(b[0]))

运行结果:

​ 声明:本文转自python中矩阵切片维数微秒变化

python中矩阵切片维数微秒变化的更多相关文章

  1. Python中的切片操作

    python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>& ...

  2. 关于python中矩阵的实现和矩阵的转置

    python中矩阵的实现是靠序列,,, 序列有很多形式, 其实矩阵是现实生活中的东西,把现实生活中的结构转换到程序中. 就需要有个实现的方法,而这种路径是多种多样的. 下面给出一个把矩阵转换成pyth ...

  3. 一些Python中的二维数组的操作方法

    一些Python中的二维数组的操作方法 这篇文章主要介绍了一些Python中的二维数组的操作方法,是Python学习当中的基础知识,需要的朋友可以参考下 需要在程序中使用二维数组,网上找到一种这样的用 ...

  4. 在python中定义二维数组

    发表于 http://liamchzh.0fees.net/?p=234&i=1 一次偶然的机会,发现python中list非常有意思. 先看一段代码 [py]array = [0, 0, 0 ...

  5. python中的切片

    python中提供了一种很方便的方法来完成取出指定范围内的元素,这种方法就是切片(Slice). 以下为切片的例子: In [1]: L = ['Michael', 'Sarah', 'Tracy', ...

  6. Python 中的多维字典

    Python中的dict可以实现迅速查找.那么有没有像数组有二维数组一样,有二维的字典呢?比如我需要对两个关键词进行查找的时候.2D dict 可以通过 dict_2d = {'a': {'a': 1 ...

  7. 在Python中建立N维数组并赋初值

    在Python中,由于不像C++/Java这样的语言可以方便的用a[i][j]=0的方式,建立二维数组并赋初值,所以需要一个相对巧妙的方法. 可以用列表解析的方式,eg: >>> m ...

  8. Python中的切片符

    最近在学python,感觉切片符有点难以理解.在网上查了点资料,然后做个总结 理解切片符,首先得知道数组是从0开始的, 而且切片符最后一个是-1. 我们先定义个数组   a=[1,2,3,4,5] 切 ...

  9. python中矩阵的用法

    python矩阵的表示真是让人头大,下面记录一下具体用法:array是numpy库里的.不管怎样, 一.首先导入 numpy: 1)import numpy 2)from numpy import * ...

  10. python中数组切片[:,i] [i:j:k] [:-i] [i,j,:k]

    逗号","分隔各个维度,":"表示各个维度内的切片,只有:表示取这个维度的全部值,举例说明如下 1 1.二维数组 2 3 X[:,0]取所有行的第0个数据,第二 ...

随机推荐

  1. IDEA:端口号被占用解决办法

    idea遇到这样的问题:如下图 解决办法 步骤1:通过端口号找到pid打开dos命令行,输入netstat -ano | find "9009"得到下列内容,看到最后一行就是pid ...

  2. vscode - Prettier插件 统一代码风格规范,保存自动格式化代码

    安装 Prettier - Code formatter prettier安装完毕,使用shift+alt+f就可格式化代码. 如果需要自动保存,要在系统设置中增加"editor.forma ...

  3. Oracle数据类型的简单学习之一

    Oracle数据类型的简单学习之一 背景 因为信创安可替代的发展 有很多项目提到了数据库切换到国产数据库的要求. 一般情况是要求从Oracle/SQLServer 迁移到国产的: 达梦/瀚高/人大金仓 ...

  4. [转帖]Linux的缓存内存(cache memory)

    PS:为什么Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做Cache Memory. 为什么Linux系统没运行多少程 ...

  5. ARMv8.0下duckdb的安装与编译过程-解决 Failed to allocate block of 2048 bytes

    ARMv8.0下duckdb的安装与编译过程-解决 Failed to allocate block of 2048 bytes 背景 duckdb 是一个很流行的单机版数据库引擎 同事下载了相关的预 ...

  6. [转帖]在麒麟Linux安装Postgis

    https://jimolonely.github.io/tech/linux/install-postgis-kylin/ 接着上一篇在麒麟linux上安装Postgresql12.5 ,我们来安装 ...

  7. 【转帖】isolcpus功能与使用

    isolcpus功能存在已久,笔者追溯v2.6.11(2005年)那时内核就已经存在了isolcpus功能.根据kernel-parameters.txt 上的解释,"isolcpus功能用 ...

  8. [转帖]ubuntu下配置iptables、ufw端口转发

    iptables 端口转发(CentOS) 注意:一来一去 在中转服务器操作 iptables -t nat -A PREROUTING -p tcp --dport [端口号] -j DNAT -- ...

  9. [转帖]【JVM】常用虚拟机参数及实例

    常用参数表 参数 描述 -XX:+PrintGC 启动java虚拟机后,只要遇到gc,就打印日志 -XX:+PrintGCDetails gc发生时,打印更详细的日志 -XX:+PrintHeapAt ...

  10. 我在京东做研发 | 揭秘支撑京东万人规模技术人员协作的行云DevOps平台

    随着业务变化的速度越来越快各类IT系统的建设也越来越复杂大规模研发团队的管理问题日益突出如何提升研发效能成为时下各类技术团队面临的重要挑战 京东云DevOps专家将带您深入研发一线揭秘支撑京东集团万人 ...