Python numpy.ndim 和 numpy.shape

今天遇到了这个问题,感觉跟之前的认识不一样,所以记录一下:

numpy.ndim

查看网上的定义:
这里写图片描述

感觉Python 中一些概念跟数学不是很一致,这里使用了dimension,后边的解释还出现了rank,在线性代数里,我们理解这个 rank 是秩的意思吧,但是这里显然不是这样的,比如单位矩阵:

data =  [[1, 0, 0],
         [0, 1, 0],
         [0, 0, 1]]
arr1 = array(data)

这时候输出的arr1.ndim是2,后来找资料,可以这么理解:在数学里我们理解二维,三维空间,一个非常直观的就是二维平面中的点可以这样表示 (i, j) , 三维空间中则是 (i, j, k) 这个维就是这样,如果我们可以使用i,j两个坐标表示array中的一个数据,那么它的ndim就是2, i,j,k同理就是3了,测试一下:

from numpy import *

d1 = [[1,2],
      [2, 3]]
a1 = array(d1)

d2 = [[[1, 2], [2,3]],
      [[2, 3], [3, 4]]]     #3维数组
      
a2 = array(d2)
print(a1.ndim)   #2
print("-"*9)
print(a2.ndim)   #3

这样就搞清楚这个dimension跟rank是什么意思了。
顺便说一下跟这个总在一块的属性,shape ,跟它的名字一样,就是数组的行、列数:

d2 = [[[1, 2], [2,3]],
      [[2, 3], [3, 4]]]
a2 = array(d2)

print(a2.ndim)
print(a2.shape)   #(2, 2, 2)
可以使用tolist()函数将numpy.ndarray转换为list。 是的,可以使用 `tolist()` 函数将 NumPy 数组转换为 Python 列表。例如,如果 `arr` 是一个 NumPy 数组,你可以使用以下代码将其转换为列表: ```python import numpy as np arr = np.array([1, 2, 3]) lst = arr.tolist() ``` 现在,`lst` 是一个 Python 列表,它包含与 `arr` 相同的元素。当您创建一个NumPy数组时,您可以将其视为具有以下属性的列表: 1. 数组的维数或轴数,也称为rank。 2. 数组的形状,即每个轴的长度。 3. 数组的数据类型,例如整数、浮点数或布尔值。 此外,NumPy数组还具有许多有用的属性和方法,包括: 1. ndarray.ndim:数组的轴数或维数(rank)。 2. ndarray.shape:数组的形状,以整数元组的形式返回,例如(3,4)表示3行4列的矩阵。 3. ndarray.size:数组中元素的总数。 4. ndarray.dtype:描述数组中元素类型的对象,例如numpy.int32、numpy.int16或numpy.float64等。 5. ndarray.itemsize:数组中每个元素的字节大小。 6. ndarray.data:包含数组实际元素的缓冲区,通常不需要直接访问它。 下面是一个例子: ``` import numpy as np # 创建一个形状为(2,3)的二维数组 a = np.array([[1,2,3], [4,5,6]]) print("ndim:", a.ndim) # 输出: 2 print("shape:", a.shape) # 输出: (2, 3) print("size:", a.size) # 输出: 6 print("dtype:", a.dtype) # 输出: int64 print("itemsize:", a.itemsize) # 输出: 8 print("data:", a.data) # 输出: <memory at 0x7fb93883e9a0> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值