-
2019-08-08 16:05:54
关于python函数中shape的解释:
shape包含在numpy库,是矩阵(ndarray)的属性,可以获取矩阵的形状(例如二维数组的行列),获取的结果是一个元组,因此相关代码如下:
import numpy as np
x = np.array([[1,2,3,4,5],[6,7,8,9,10],[10,9,8,7,6],[5,4,3]])
#输出数组的行和列数
print x.shape #结果: (4, 5)
#只输出行数
print x.shape[0] #结果: 4
#只输出列数
print x.shape[1] #结果: 5仅供个人学习参考
更多相关内容 -
基于Python对数据shape的常见操作详解
2020-12-25 14:23:47这一阵在用python做DRL建模的时候,尤其是在配合使用tensorflow的时候,加上tensorflow是先搭框架再跑数据,所以调试起来很不方便,经常遇到输入数据或者中间数据shape的类型不统一,导致一些op老是报错。... -
python中shape用法
2019-08-11 09:53:41x_data.shape = -1, 1 # 将x_data调整为(任意行,1列) import numpy as np x_data = np.linspace(0,10,100) print(type(x_data),x_data) x_data.shape = -1, 1 # 将x_data调整为(任意行,1列) print(type(x_...x_data.shape = -1, 1 # 将x_data调整为(任意行,1列)
import numpy as np x_data = np.linspace(0,10,100) print(type(x_data),x_data) x_data.shape = -1, 1 # 将x_data调整为(任意行,1列) print(type(x_data),x_data)
输出分别如下:
<class 'numpy.ndarray'> [ 0. 1.11111111 2.22222222 3.33333333 4.44444444 5.55555556 6.66666667 7.77777778 8.88888889 10. ] <class 'numpy.ndarray'> [[ 0. ] [ 1.11111111] [ 2.22222222] [ 3.33333333] [ 4.44444444] [ 5.55555556] [ 6.66666667] [ 7.77777778] [ 8.88888889] [10. ]]
-
python创建ArcGIS shape文件的实现
2020-09-18 08:18:23今天小编就为大家分享一篇python创建ArcGIS shape文件的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Python里对于shape()的理解
2021-02-18 14:17:18Python里对于shape()的理解 (1)shape()含义 在笔者debug深度学习相关代码的时候,很容易出现shape()这样形式的东西,用来告知输出数据的形式,由于shape()里出现的数字数量不同,还经常有shape(?,64,512)...Python里对于shape()的理解
(1)shape()含义
在笔者debug深度学习相关代码的时候,很容易出现shape()这样形式的东西,用来告知输出数据的形式,由于shape()里出现的数字数量不同,还经常有shape(?,64,512)这样的数据存在,因此上网查了一些信息,作出比较通俗易懂的解释:
import numpy as np a = np.array([[[1,2,3],[4,5,6]]]) print(a.shape) (1, 2, 3)
表示该数组有1个,是2行3列的数组。每一个shape里的数字对应数组中的一对中括号,第一个数字1表示最外层的中括号。以此类推,数字2表示第二层中括号,数字3表示最里层的中括号。如果定义array时去掉了最外层的括号那么输出的shape为(2, 3)。
(2)区分一维数组和二维数组
有几个中括号就为几维数组
因此在上文中,有三对中括号,是3维数组,shape()中有3个数。a = np.array([1,2]) #a.shape值(2,),意思是一维数组,数组中有2个元素。 b = np.array([[1],[2]]) #b.shape值是(2,1),意思是一个二维数组,每行有1个元素。 c = np.array([[1,2]]) #c.shape值是(1,2),意思是一个二维数组,每行有2个元素。
(3)shape()中“?”的含义
而在debug相关程序时,可能会出现shape(?,2,3)这便代表数组每一个都是2行3列的,前面这个“?”便代表批处理个数,若为1则有1个,为2则有两个,但是在debug的时候不知道有几个,所以以“?”的形式显示。
(4)shape()中有四个数,第一个数表示时间序列(批处理数)
from keras.models import Input,Model from keras.layers import Dense,Conv2D,TimeDistributed input_ = Input(shape=(12,32,32,3)) out = TimeDistributed(Conv2D(filters=32,kernel_size=(3,3),padding='same'))(input_) model = Model(inputs=input_,outputs=out) model.summary()
而这里,shape()中有四个数。第一个12代表就是时间序列,32,32,3指的是高,宽,通道数。卷积操作使用TimeDistributed就相当与这12个时间序列共享一个卷积层参数信息,无论时间序列值为多少,参数总量还是一定的。此处一共有896个参数,卷积核weights有3×3×3×32=864个,卷积核bias有32个。
附TimeDistributed解释
关于TimeDistributed有一个比较通俗的示例解释:
考虑一批32个样本,其中每个样本是一个由16个维度组成的10个向量的序列。该层的批输入形状然后(32, 10, 16)。可以这么理解,输入数据是一个特征方程,X1+X2+…+X10=Y,从矩阵的角度看,拿出未知数,就是10个向量,每个向量有16个维度,这16个维度是评价Y的16个特征方向。
TimeDistributed层的作用就是把Dense层应用到这10个具体的向量上,对每一个向量进行了一个Dense操作,假设是下面这段代码:
model = Sequential()model.add(TimeDistributed(Dense(8), input_shape=(10, 16)))
输出还是10个向量,但是输出的维度由16变成了8,也就是(32,10,8)。
TimeDistributed层给予了模型一种一对多,多对多的能力,增加了模型的维度。
-
Python中shape计算矩阵的方法示例
2020-12-23 22:47:51本文实例讲述了Python中shape计算矩阵的方法。分享给大家供大家参考,具体如下: 看到机器学习算法时,注意到了shape计算矩阵的方法接下来就讲讲我的理解吧 >>> from numpy import * >>> import operator >>> a =... -
对numpy中shape的深入理解
2020-12-03 13:47:34环境:Windows, Python2.7一维情况:>>> import numpy as np>>> a = np.array([2,3,33])>>> aarray([ 2 3 33 ])>>> print a[ 2 3 33 ]>>> a.shape(3, )一维情况中...环境:Windows, Python2.7
一维情况:
>>> import numpy as np
>>> a = np.array([2,3,33])
>>> a
array([ 2 3 33 ])
>>> print a
[ 2 3 33 ]
>>> a.shape
(3, )
一维情况中array创建的可以看做list(或一维数组),创建时用()和[ ]都可以,多维也一样,两种方法创建后的输出显示结果也相同,这里使用[ ]进行创建
输出a的shape会显示一个参数,就是这个list中元素个数
创建时也可以直接使用np.zeros([1]),这样会创建全0的list,或者np.ones([1]),不需要我们输入数据,见下图:
>>> a = np.zeros([1])
>>> b = np.ones([1])
>>> print a
[ 0. ]
>>> print b
[ 1. ]
二维情况:
>>> a = np.array([[2,2,2],[3,3,3]])
>>> print a
[[ 2 2 2 ]
[ 3 3 3 ]]
>>> a.shape
(2, 3)
二维情况中array创建的可以看做二维数组(矩阵),注意创建时需要使用2个[ ],输出a的shape显示的(2,3)相当于有2行,每行3个数,使用np.ones创建结果如下:
>>> a = np.ones([2, 3]) >>> print a [[ 1. 1. 1. ] [ 1. 1. 1. ]]
多维情况:
多维情况统一使用np.ones进行创建,先看三维情况:
>>> a = np.ones([1,1,1])
>>> print a
[[[ 1.]]]
>>> a = np.ones([1,1,2])
>>> print a
[[[ 1. 1.]]]
>>> a = np.ones([1,2,1])
>>> print a
[[[ 1.]
[ 1.]]]
>>> a = np.ones([2,1,1])
>>> print a
[[[ 1.]]
[[ 1.]]]
从上面的代码可以看出,三维情况创建时后面2个参数可以看做是创建二维数组,第1个参数看做创建的二维数组的个数,所以创建时输入的参数为2,3,2时,就相当于创建了2个3行2列的二维数组,如下:
>>> a = np.ones([2,3,2])
>>> print a
[[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]
[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]]
然后看四维情况:
>>> a = np.ones([1,1,1,1])
>>> print a
[[[[ 1.]]]]
>>> a = np.ones([1,1,1,2])
>>> print a
[[[[ 1. 1.]]]]
>>> a = np.ones([1,1,2,1])
>>> print a
[[[[ 1.]
[ 1.]]]]
>>> a = np.ones([1,2,1,1])
>>> print a
[[[[ 1.]]
[[ 1.]]]]
>>> a = np.ones([2,1,1,1])
>>> print a
[[[[ 1.]]]
[[[ 1.]]]]
从上面代码可以看出:四维时将第一个参数设置为2和第二个参数设置为2时,输出结果中间的空行数量不同,我把它理解成先创建1行1列的二维数组[[ 1. ]],然后按照第2个参数打包这样的二维数组,如果第二个参数是2,则打包2个2维数组变成[[[ 1. ]],[[ 1. ]]](小包),然后按照第1个参数再打包这样的包,如果第一个参数是2,则变成[[[[ 1. ]], [[ 1. ]]], [[[ 1. ]], [[ 1. ]]]](大包),就是下面的结果:
>>> a = np.ones([2,2,1,1])
>>> print a
[[[[ 1.]]
[[ 1.]]]
[[[ 1.]]
[[ 1.]]]]
四维以上的结果也是这么理解~输出中区分参数用空行~
然后来看一下特定输出:
>>> import numpy as np
>>> m = np.ones([2,3,2,3])
>>> print m
[[[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]]
[[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]]]
>>> print m[1,:,:,:]
[[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]]
>>> print m[:,1,:,:]
[[[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]]]
>>> print m[:,:,1,:]
[[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]
[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]]
>>> print m[:,:,:,1]
[[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]
[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]]
前面print m很好理解~
然后print m[1,:,:,:],:代表默认值(就是一开始你输入时指定的值),这句代码相当于输出2个包中的第1个包(从0开始计数),这个包里面有3个小包,小包里面是2*3的二维数组,所以结果就是上面的~
然后print m[:,1,:,:],相当于输出2个大包,每个大包输出第1个小包,小包里面是2*3的二维数组
然后print m[:,:,1,:],相当于输出2个大包,每个大包输出3个小包,小包里面是二维数组的第1行
然后print m[:,:,:,1],相当于输出2个大包,每个大包输出3个小包,小包里面是1*2的二维数组
其他结果可以自己去试试~
总结:采用np.array()创建时需要几个维度就要用几个[ ]括起来,这种创建方式要给定数据;采用np.ones()或np.zeros()创建分别产生全1或全0的数据,用a.shape会输出你创建时的输入,创建时输入了几个维度输出就会用几个[ ]括起来,shape的返回值是一个元组,里面每个数字表示每一维的长度
以上这篇对numpy中shape的深入理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
-
python数据分析基础知识—shape()函数的使用
2022-06-16 17:58:19python数据分析 shape()函数 -
Python库 | alphashape-1.2.0.tar.gz
2022-05-12 00:29:20资源分类:Python库 所属语言:Python 资源全名:alphashape-1.2.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059 -
python中shape的运用
2020-05-02 14:16:38文章目录shape()的使用 shape()的使用 shape()函数返回 -
ShapeDetection:使用opencv和python检测形状的工具
2021-03-28 20:39:30形状检测库 使用OpenCV和Python检测图像形状的工具。 您可以在其他地方使用 -
Python numpy的shape()用法
2021-11-30 19:58:48Python numpy的shape()用法 举三个例子来说明shape()的用法 一维数组 arr1 = np.array([1,3,5,2,4,6,-2,-7,-9,6,6,6]) print(arr1.shape, arr1) ((12,), array([ 1, 3, 5, 2, 4, 6, -2, -7, -9, 6, 6, 6])) 二维... -
python中的size和shape
2020-06-28 17:40:21size和shape是numpy中的函数. size()计算矩阵中所有元素的个数; shape()返回维度值。即 import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(np.size(a)) print(np.shape(a)) 返回结果为 9 (3, 3)... -
python numpy矩阵信息说明,shape,size,dtype
2020-09-16 20:25:07主要介绍了python numpy矩阵信息说明,shape,size,dtype,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
《手把手陪您学Python》49——数组的shape属性
2021-04-19 11:12:58在上一篇《手把手陪您学Python》48——数组的生成方法1中,我们学习了array()、arange()以及linspace()三种生成数组的方法,并且了解了数组是使用嵌套列表的方式进行表示的。 今天,我们将会学习数组的shape属性,... -
python的shape函数的用法
2020-08-29 21:11:32shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。 shape的输入参数可以是一个整数(表示维度),也可以是一个矩阵。以下例子可能会好理解一些: ... -
python中的shape, shape[0], shape[1]
2022-04-22 21:16:54shape: 获取数组的形状 假设是一个二维数组 shape[0]: 获取数组的行数 shape[1]: 获取数组的列数 例: import numpy as np x = np.array([[1, 2, 3, 4], [4, 3, 2, 1]]) x.shape >>> (2, 4) x.shape[0] ... -
python报错: 'list' object has no attribute 'shape'的解决
2020-12-13 06:36:42numpy.array可使用 shape。...(array转list:array B B.tolist()即可)补充知识:Pandas使用DataFrame出现错误:AttributeError: 'list' object has no attribute 'astype'在使用Pandas的DataFrame时出现了错误... -
Python之Shape()函数
2019-04-25 10:17:44shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。 shape的输入参数可以是一个整数(表示维度),也可以是一个矩阵。以下例子可能会好理解一些: ... -
python shape函数的用法
2021-05-25 20:48:09代码: import numpy as np x=np.array([[1,2,3],[2,...Sz=x.shape Sz0=x.shape[0] Sz1=x.shape[1] print(Sz) print(Sz0) print(Sz1) 输出: [[ 1 2 3] [ 2 3 5] [11 15 17] [58 2 87] [ 5 8 2] [ 1 4 3]] (6, 3) -
Python中读取矩阵的维度 ndarray.shape函数
2022-02-24 08:39:07【小白从小学Python、C、Java】 【Python全国计算机等级考试】 【Python数据分析考试必会题】 ● 标题与摘要 Python中读取矩阵的维度 ndarray.shape函数 ●选择题 以下程序输出什么: import numpy as np ... -
Python numpy函数:shape用法(简单样本及样本对应变量场景)
2021-07-23 10:09:04Python numpy函数:shape用法(简单样本及样本对应变量场景) data = np.array([[1,2,3],[4,5,6]]) a = data.shape[0] #获取data样本数 对应行 b = data.shape[1] #获取data样本中的维度 对应列 print(a,b) a = 2 b = ... -
Python中shape简易用法
2018-05-15 09:37:26通过安装导入numpy库,矩阵(ndarray)的shape属性可以获取矩阵的形状(例如二维数组的行列),获取的结果是一个元组,因此相关代码如下:import numpy as np x = np.array([[1,2,5],[2,3,5],[3,4,5],[2,3,6]]) #... -
Python脚本在shape文件中的运用.pdf
2021-06-29 12:28:28Python脚本在shape文件中的运用.pdf -
Python中size和shape区别
2021-01-22 14:53:37在numpy里面,两个是不相同的,size: 所有元素的个数和, shape: 数组类型大小(3,2) , 但在pytorch里面,两个是一样的,表达的都是数组类型 import torch import numpy as np a = np.array([[1,2,3], [4,5,6]])... -
Opencv-Python Contour Shape Detection 轮廓形状检测
2021-11-11 19:20:23首先,先将图像进行灰度处理,在借助模糊处理,得到边缘检测图像;接着,借用边缘检测图像,获取图像轮廓参数,通过面积,以及边框数,检测出图形的形状。OK,Let‘s go! Opencv版本 这个opencv-contrib-python ,这...