我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

在前面的dataframe文章里面,苏南大叔曾经描述过dataframendarray是可以相互转化的。就二维ndarray而言,dataframe可以理解为:ndarray=>csv格式,dataframe=>excel格式。换句话说,dataframe就是多了列和行(索引)的概念。

苏南大叔:如何定义一个ndarray数组?理解ndarray三维数组立方体 - ndarray-三维
如何定义一个ndarray数组?理解ndarray三维数组立方体(图4-1)

大家好,这里是苏南大叔的程序如此灵动博客,记录的是苏南大叔的编程经验感想。测试环境:win10python@3.11.0numpy@1.24.2pandas@1.5.3

基础知识

是要了解DataFrame和二维ndarray的类型互转方式,参考文章:

其次,还是要认识到DataFrame类型的.values属性就是个numpyndarray类型,参考文章:

定义一个ndarray

ndarray最朴素的理解就是N维数组,当然了,对传统的数组进行了强制类型转换。测试代码:

import numpy as np
a1__ = np.array( [1, 2, 3] )                 # 一维
a2__ = np.array( [[1, 2, 3]] )               # 二维
a2_2 = np.array( [[1, 2, 3], [4, 5, 6]] )    # 二维
a3__ = np.array( [[[ 1, 2, 3 ]]] )           # 三维
a3_2 = np.array( [[[ 1, 2, 3 ], [4, 5, 6] ], [[ 7, 8, 9 ], [10, 11, 12] ]] )   # 三维

苏南大叔:如何定义一个ndarray数组?理解ndarray三维数组立方体 - ndarray-ndim
如何定义一个ndarray数组?理解ndarray三维数组立方体(图4-2)

判断维数的方式

最朴素的方式,就是数一下最外层的[数量,来确定一下到底是几个维度的数据。还可以打印一下.ndim属性来确定一下维数。

print(a1__.ndim)           # 1
print(a2__.ndim)           # 2
print(a2_2.ndim)           # 2
print(a3__.ndim)           # 3
print(a3_2.ndim)           # 3

三维数组立方体

对于维度1和维度2来说,都非常好理解,这里不解释。就是这个理解为立方体的三维数组,该是什么样的呢?这必然引发了另外一个轴的概念。原有的二维数组,就是三维数组中的一个层,可以理解为立方体最上面的第一个面。从最上面的面,到最后一个面,中间有无数层数据。

下面的图来展示下面的三维数据:

np.array( [[[ 1, 2, 3 ], [4, 5, 6] ], [[ 7, 8, 9 ], [10, 11, 12] ]] ) 

苏南大叔:如何定义一个ndarray数组?理解ndarray三维数组立方体 - 立方体理解
如何定义一个ndarray数组?理解ndarray三维数组立方体(图4-3)

辅助理解,换句话说:如果读者面对着最上面一层的话,那么第二层第三层就在屏幕的后方了。

苏南大叔在睡梦中想这个问题,结合后续的数组翻转话题,觉得这个立方体理解为一本书的外壳更加合适,即这个六面体中的面有三个是实际存在的,另外三个是虚的不存在的。(否则书是怎么翻开的呢?)

苏南大叔:如何定义一个ndarray数组?理解ndarray三维数组立方体 - 了不起的程序员
如何定义一个ndarray数组?理解ndarray三维数组立方体(图4-4)

结束语

不是说没有四维五维等更多维度的ndarray,只不过三维的立方体就已经非常难以理解了,苏南大叔这里就不做过多描述了,免得大家的CPU冒烟。而且平时也用不到那么多的维度,不是?

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python