首页 > 编程语言 >python中矩阵切片维数微秒变化

python中矩阵切片维数微秒变化

时间:2023-03-19 11:35:14浏览次数:57  
标签:python reshape 维数 np len print 微秒 numpy

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)

运行结果:

img

变量空间:

img

可以看出,使用了冒号“:”就不会降维。比如: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)

运行结果:

img

变量空间:

img

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)

运行结果:

img

变量空间:

img

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

变量空间:

img

  • 如果不看变量空间,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]))

运行结果:

img

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

标签:python,reshape,维数,np,len,print,微秒,numpy
From: https://www.cnblogs.com/zhyan8/p/17232652.html

相关文章

  • python重新命名,名字简短化
    #filedeal.py#!/usr/bin/envpython#-*-coding:utf-8-*-importosimportshutilfromPILimportImageimportioimportrequestsimportdatetime#获取所......
  • python中矩阵合并、拼接、组合
    1numpy数组1.1append()importnumpyasnpa=np.array([[1,3],[5,7]])b=np.array([[2,4],[6,8]])c=np.append(a,b)d=np.append(a,b,axis=0)e=np.append(a,b,axi......
  • tensorflow中高维数组乘法运算
    1前言声明:本博客里的数组乘法运算是指矩阵乘法运算,不是对应元素相乘。在线性代数或高等代数中,我们学习了矩阵乘法,那么,什么样的高维数组才能相乘?tensorflow又是如何定义......
  • python中两个不同shape的数组间运算规则
    1前言声明:本博客讨论的数组间运算是指四则运算,如:a+b、a-b、a*b、a/b,不包括a.dot(b)等运算,由于numpy和tensorflow中都遵循相同的规则,本博客以numpy为例。众所周......
  • Python中文件读写操作
    1txt文件1.1写操作importnumpyasnpdefwrite(fileName,data):file=open(fileName,'w')row,col=data.shapestring=""foriinrange(row):......
  • python单元测试unittest
    快速上手#被测代码defadd_func(a,b):returna+b#测试代码importunittestclassMyTest(unittest.TestCase):deftest_add_func(self):#......
  • python有序字典在做题中的使用.
    66.两个链表的第一个公共结点  题目  提交记录  讨论  题解  视频讲解输入两个链表,找出它们的第一个公共结点。当不存在公共节点时,返回空......
  • 100道python基础题——(8)
    问题:编写一个程序,接受逗号分隔的单词序列作为输入,按字母顺序排序后按逗号分隔的序列打印单词。假设向程序提供以下输入:without,hello,bag,world则输出为:bag,hello,witho......
  • 100道python基础题——(9)
    多组输入问题:编写一个程序,接受一行序列作为输入,并在将句子中的所有字符大写后打印行。假设向程序提供以下输入:HelloworldPracticemakesperfect则输出为:HELLOWORLDP......
  • 100道python基础题——(7)
    问题:编写一个程序,以2位数字,X,Y作为输入,生成一个二维数组。数组的第i行和第j列中的元素值应该是i*j。注意:i=0,1..,X-1;j=0,1,­Y-1。例子假设程序有以下输入:......