伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

【荐读】numpy ndarray 之内功心法,理解高维操作!

来源:本站原创 浏览:83次 时间:2022-05-08
1多维数据的形象表示
numpy npdata_1d = np.array([])data_2d = np.arange().reshape()data_3d = np.arange().reshape()

检查一个 ndarray 数据的维度和大小,分别用 ndim 和 shape 属性。

>>> (data_3d.ndim)>>> (data_3d.shape)()

shape 是一个很关键的属性,我是这样把它和各个轴对应的:

shape:  ()         kmn         zyx

心法1: x, y, z 对应的shape元组是从右往左数的。

这是我的个人习惯,也符合主流的用法。

2图像数据的小误会

打开一幅 640 x 480 的图像:

numpy npmatplotlib.pylab pltimage = plt.imread()(image.shape)

不是 640 x 480 吗, 怎么倒过来了?我写代码的时候在这里总是犯迷糊。

在口头表达中,我们先说宽640,再说高480,而在计算机中是先高(y) 后宽(x),注意了!

每个像素有三个颜色分量(color),所以这个维度放在了最右边,可以理解,顺序就是 (y, x, c)


3抽象轴上的操作

对于4维及更高维度的数据,无法在3维空间图示。这个时候,就不要考虑形象思维了,直接按照规则做处理。

用 shape 属性返回的元组,从左到右,座标轴分别命名为 axis 0, axis 1, ...,请注意,现在是从左向右数,正好是这个元组的 index,在以后的运算中,都按此规定。

>>> (data.shape)()

心法2: 抽象座标轴顺序从左向右。指定哪个轴,就只在哪个轴向操作,其他轴不受影响。

  1. 排序(sorting)

data = np.array(np.arange())np.random.shuffle(data)data = data.reshape()(data)(np.sort(data=))(np.sort(data=))

如果你在心中能把抽象轴和 x, y, z 对应起来,则理解轴向排序很容易。

shape:  ()axis:    AXIS:    yx

2. 求和、均值、方差、最大、最小、累加、累乘

这几个函数调用,一般会指定轴向,注意心法2

sum,mean,std,var,min,max 会导致这个轴被压扁,缩减为一个数值

data = np.arange().reshape()(data)( np.sum(data=) )( np.sum(data=) )

cumsum,cumprod 不缩减轴向,只在指定轴向操作,请读者自己试验。

3. 索引和切片(indexing and slicing)

心法3: 在索引中出现冒号(:),则本轴继续存在,如果只是一个数值,则本轴消失。

例如,像 :, :1, 1: 这样的索引,保留此轴, data[:, :1, 2:] 中,三个轴都保留。 data[1, 4, 2] 三个轴都消失,只返回一个数值。

data[1:2, 0:1, 0:1] 中,三个轴都保留,但只有一个数据元素,很神奇吧。

data = np.arange().reshape()( data )( data[::] )( data[] )( data[:::] )

如何查看 ndarray 的维度呢?可以访问 shape 属性;如果打印出来了,那么就数一数起始的中括号个数,比如 [[[6]]], 有三个 [,那么就是三维数组。你记住了吗?

4. 拼接(concatenating)

同样遵循心法2,指定哪个轴,就在哪个轴向拼接:

data = np.arange().reshape()( np.concatenate([datadata]=) )( np.concatenate([datadata]=) )


4reshape 之迷乱

你有没有这个困惑:在 reshape 之后,数据在各个轴上是如何重新分配的?

搞清楚 ndarray 的数据在内存里的存放方式,以及各个维度的访问方式,reshape 困惑就迎刃而解了。

心法4: ndarray 的数据在内存里以一维线性存放,reshape 前后,数据没有变化,只是访问方式变了而已。

数据优先填充 X 轴向,其次 Y 轴,其次 Z 轴 。。。

有 C 语言基础的,很容易理解 ndarray 的实现,就是 C 中的多维数组而已。

data[][][];data[][];


5总结

就说这么多,看了本文请亲自动手写代码体验一下。掌握此心法,可以纵横 numpy 世界而无大碍。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net