环境:Windows, Python2.7
一维情况:
<span style="font-size:14px;" import numpy as np > a = np.array([2,3,33]) > a array([ 2 3 33 ]) > print a [ 2 3 33 ] > a.shape (3, )</span>
一维情况中array创建的可以看做list(或一维数组),创建时用()和[ ]都可以,多维也一样,两种方法创建后的输出显示结果也相同,这里使用[ ]进行创建
输出a的shape会显示一个参数,就是这个list中元素个数
创建时也可以直接使用np.zeros([1]),这样会创建全0的list,或者np.ones([1]),不需要我们输入数据,见下图:
<span style="font-size:14px;" a = np.zeros([1]) > b = np.ones([1]) > print a [ 0. ] > print b [ 1. ]</span>
二维情况:
<span style="font-size:14px;" a = np.array([[2,2,2],[3,3,3]]) > print a [[ 2 2 2 ] [ 3 3 3 ]] > a.shape (2, 3)</span>
二维情况中array创建的可以看做二维数组(矩阵),注意创建时需要使用2个[ ],输出a的shape显示的(2,3)相当于有2行,每行3个数,使用np.ones创建结果如下:
<span style="font-size:14px;" a = np.ones([2, 3]) > print a [[ 1. 1. 1. ] [ 1. 1. 1. ]]</span>
多维情况:
多维情况统一使用np.ones进行创建,先看三维情况:
<span style="font-size:14px;" 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.]]]</span>
从上面的代码可以看出,三维情况创建时后面2个参数可以看做是创建二维数组,第1个参数看做创建的二维数组的个数,所以创建时输入的参数为2,3,2时,就相当于创建了2个3行2列的二维数组,如下:
<span style="font-size:14px;" a = np.ones([2,3,2]) > print a [[[ 1. 1.] [ 1. 1.] [ 1. 1.]] [[ 1. 1.] [ 1. 1.] [ 1. 1.]]]</span>
然后看四维情况:
<span style="font-size:14px;" 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.]]]]</span>
从上面代码可以看出:四维时将第一个参数设置为2和第二个参数设置为2时,输出结果中间的空行数量不同,我把它理解成先创建1行1列的二维数组[[ 1. ]],然后按照第2个参数打包这样的二维数组,如果第二个参数是2,则打包2个2维数组变成[[[ 1. ]],[[ 1. ]]](小包),然后按照第1个参数再打包这样的包,如果第一个参数是2,则变成[[[[ 1. ]], [[ 1. ]]], [[[ 1. ]], [[ 1. ]]]](大包),就是下面的结果:
<span style="font-size:14px;" a = np.ones([2,2,1,1]) > print a [[[[ 1.]] [[ 1.]]] [[[ 1.]] [[ 1.]]]]</span>
四维以上的结果也是这么理解~输出中区分参数用空行~
然后来看一下特定输出:
> 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的深入理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
numpy,shape
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]