Numpy中ndim、shape、dtype、astype的用法

1.ndim

ndim返回的是数组的维度,返回的只有一个数,该数即表示数组的维度。

2.shape


shape:表示各位维度大小的元组。返回的是一个元组。

对于一维数组:有疑问的是为什么不是(1,6),因为arr1.ndim维度为1,元组内只返回一个数。

对于二维数组:前面的是行,后面的是列,他的ndim为2,所以返回两个数。

对于三维数组:很难看出,下面打印arr3,看下它是什么结构。


先看最外面的中括号,包含[[1,2,3],[4,5,6]]和[[7,8,9],[10,11,12]],假设他们为数组A、B,就得到[A,B],如果A、B仅仅是一个数字,他的ndim就是2,这就是第一个数。但是A、B是(2,3)的数组。所以结合起来,这就是arr3的shape,为(2,2,3)。

将这种方法类比,也就可以推出4维、5维数组的shape。
3.dtype


dtype:一个用于说明数组数据类型的对象。返回的是该数组的数据类型。由于图中的数据都为整形,所以返回的都是int32。如果数组中有数据带有小数点,那么就会返回float64。

有疑问的是:整形数据不应该是int吗?浮点型数据不应该是float吗?

解答:int32、float64是Numpy库自己的一套数据类型。
4.astype


astype:转换数组的数据类型。

int32 --> float64        完全ojbk

float64 --> int32        会将小数部分截断

string_ --> float64        如果字符串数组表示的全是数字,也可以用astype转化为数值类型


注意其中的float,它是python内置的类型,但是Numpy可以使用。Numpy会将Python类型映射到等价的dtype上。

1、查看数据类型

1

2

3

4

5

6

7

8

9

10

In [11]: arr = np.array([1,2,3,4,5])

In [12]: arr

Out[12]: array([1, 2, 3, 4, 5])

// 该命令查看数据类型

In [13]: arr.dtype

Out[13]: dtype('int64')

In [14]: float_arr = arr.astype(np.float64)

// 该命令查看数据类型

In [15]: float_arr.dtype

Out[15]: dtype('float64')

2、转换数据类型

1

2

3

4

5

6

7

8

9

10

// 如果将浮点数转换为整数,则小数部分会被截断

In [7]: arr2 = np.array([1.1, 2.2, 3.3, 4.4, 5.3221])

In [8]: arr2

Out[8]: array([ 1.1 , 2.2 , 3.3 , 4.4 , 5.3221])

// 查看当前数据类型

In [9]: arr2.dtype

Out[9]: dtype('float64')

// 转换数据类型 float -> int

In [10]: arr2.astype(np.int32)

Out[10]: array([1, 2, 3, 4, 5], dtype=int32)

3、字符串数组转换为数值型

1

2

3

4

5

6

In [4]: numeric_strings = np.array(['1.2','2.3','3.2141'], dtype=np.string_)

In [5]: numeric_strings

Out[5]: array(['1.2', '2.3', '3.2141'], dtype='|S6')

// 此处写的是float 而不是np.float64, Numpy很聪明,会将python类型映射到等价的dtype上

In [6]: numeric_strings.astype(float)

Out[6]: array([ 1.2, 2.3, 3.2141])

当然,我可以回答您的问题! 在Python,我们可以使用NumPy库来定义数组和函数。您可以使用以下代码来定义一个函数,并且该函数将创建一个指定形状、类型和数据的数组: ```python import numpy as np def create_array(shape, dtype=float, fill_value=0): """ 创建指定形状、类型和数据的数组。 """ return np.full(shape, fill_value, dtype=dtype) ``` 接下来,让我们讨论一下NumPy数组的属性。假设我们已经有一个名为`arr`的数组,那么可以使用以下属性来获取有关该数组的信息: - `shape`:返回一个元组,其包含数组的每个维度的大小。 - `size`:返回数组元素的总数。 - `ndim`:返回数组的维数。 - `dtype`:返回数组元素的数据类型。 - `itemsize`:返回数组每个元素所占用的字节数。 以下是一个示例,演示如何使用这些属性: ```python # 创建一个形状为(3,4)的浮点数数组 arr = create_array((3, 4), dtype=float, fill_value=1.23) # 获取数组的属性 print("数组的形状:", arr.shape) print("数组的大小:", arr.size) print("数组的维数:", arr.ndim) print("数组的数据类型:", arr.dtype) print("数组每个元素所占用的字节数:", arr.itemsize) ``` 输出结果如下: ``` 数组的形状: (3, 4) 数组的大小: 12 数组的维数: 2 数组的数据类型: float64 数组每个元素所占用的字节数: 8 ``` 希望这可以回答您的问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值