python中使用ndim和shape属性获取ndarray数据的维度、长度、形状等参数

我们在描述一个多维数组的时候,经常会用到两个参数:维度(dimension)和形状(shape),以二维数组为例,我们可以用矩阵来形象地联想这两个参数,对于矩阵,显然我们最常见的矩阵是二维的,所以他的dim参数就是2,而对于形状,可以想象成这个矩阵(矩形)的的高和宽,比如一个4行3列的矩阵,他的高就是4,宽就是3。所以他的shape参数就是(4,3),这是一对数字,因此在python中使用元祖(tuple)数据结构来表示这个属性。我们可使用以下代码来进行演示:

import numpy as np
data = np.array([
		[1,2,3],
		[4,5,6],
		[7,8,9],
		[0,0,0]
	])

print(data)
print(data.ndim)
print(data.shape)

在运行之后,我们可以得到以下结果:

[[1 2 3]
 [4 5 6]
 [7 8 9]
 [0 0 0]]
2
(4, 3)
[Finished in 1.2s]

对于大于二维的多维数组,我们可以认为就是数组的数组的数组…,我们可以用嵌套(类似于套娃结构)来描述,是几维的就有多少层嵌套。但是一般而言,我们用二维的数组就够用了,三维数组被称为张量(Tensor),在机器学习中有非常好的应用。

对于三维数组,我们可以使用以下代码进行演示:

import numpy as np
data_1dim = np.array([1,2,3,4])
data_2dim = np.array([data_1dim,data_1dim,data_1dim])
data_3dim = np.array([data_2dim,data_2dim])

print(data_3dim)
print(data_3dim.ndim)
print(data_3dim.shape)

我们打印出三维数组的形态如下:

[[[1 2 3 4]
  [1 2 3 4]
  [1 2 3 4]]

 [[1 2 3 4]
  [1 2 3 4]
  [1 2 3 4]]]
3
(2, 3, 4)
[Finished in 1.6s]

可以看出,他是数组的数组的数组,我们在分析多维数组的时候,要理清楚结构,这个要根据配对的方括号来进行判断,找到级别的,比如这里第一队括号相对于是爷爷级别的,其他的和爷爷平级的就是第一维的元素,然后括号里面的又有括号,那就是爸爸级别的,括号里面的括号里面的括号,就是儿子级别的,数组的shape就相当于一共有几个爷爷,一个爷爷生了几个爸爸,一个爸爸生了几个儿子,这样就可以形象地理解多维数组的结构了,不过我们在使用的时候,用到二维数组就够了,三维以上的理解起来和维护起来太麻烦了,不利于软件工程的开发。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值