理解高维数组

理解高维数组

在使用matlab或者python等语言进行数据处理时,高维数组是常用基本数据结构。
高维数组对应的数学概念就是张量(tensor)。在tensorflow和theano等机器学习框架中也使用tensor的概念。

Tensor可以理解为高维数组,在matlab中对高维数据做如下规定

  • The first references array dimension 1, the row.
  • The second references dimension 2, the column.
  • The third references dimension 3. This illustration uses the concept of a page to represent dimensions 3 and higher.

这里用到了row,column,page等术语,可以将其可视化,参考matlab官方文档

image

问题是:如果有第4维呢?该如何想象?

row, column, page的概念还有一个缺陷在于,如果进行维数扩展或者进行转置(transpose)操作,不利于直观想象。

所以在阅读或使用高维数组时,知乎网友建议:

需要和高维数组(Tensor)打交道的话,思考时不要想着row, column, page这些术语, 要用dim_1, dim_2,... dim_M 来思考。好多地方说Matlab是先存column, 用我们的术语其实就是Matlab按照从左到右:dim_1, dim_2,... dim_M的顺序存储元素。例如想想下面 2 x 4 x 3 x 5 矩阵的存储顺序:

sz = [2, 4, 3, 5]; % dim_1 = 2, dim_2 = 4, dim_3 = 3, dim_4 = 5
A = reshape( 1 : prod(sz), sz );

语法糖

高维数组可以理解为语法糖,在存储的时候,还是按1维数组来存储的。

如何可视化高维数组

考虑一下这种方式,

image
image

来源Quora: How do I visualize multidimensional arrays?

如何学习

遇上高维数组,画出数据结构,观察数据是如何组织的,知道你的大脑习惯这种数组组织形式。当在遇上其他高级数据结构时,清楚发生了什么。

拿出纸和笔,画出来!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《海底两万里》读后感 今天,我看了《海底两万里》这本关于海洋的巨著,顿时...
    王者已经归来阅读 1,481评论 0 0
  • 去年本打算把React Native 系统学一下,但是因为各种原因,一直延误,所以最近才开始整理时间,把学习放上日...
    辞令阅读 1,481评论 0 0
  • 1 近日看了韩寒的一篇文:"《萌芽》60周年"。文中着重描述这位80后作家的中学时代。那时各种学生杂志和文学读物开...
    禾与方塘阅读 4,138评论 5 5
  • 作为七日觉年卡觉友,知道每个月都会有一周会有个和大家一起觉察和整理的过程,心里很笃定,但是没想到这次是这样玩的。 ...
    绽放绽放阅读 1,864评论 0 0

友情链接更多精彩内容