Numpy的属性与形状变换函数怎么用

发布时间:2022-10-18 15:09:44 作者:iii
来源:亿速云 阅读:147

Numpy的属性与形状变换函数怎么用

1. 引言

NumPy(Numerical Python)是Python中用于科学计算的核心库之一,提供了高性能的多维数组对象以及用于操作这些数组的工具。在数据科学、机器学习、图像处理等领域,NumPy都是不可或缺的工具。本文将详细介绍NumPy数组的属性以及常用的形状变换函数,帮助读者更好地理解和使用NumPy。

2. NumPy数组的基本属性

在NumPy中,数组(ndarray)是最基本的数据结构。了解数组的属性是使用NumPy的基础。以下是NumPy数组的一些常用属性:

2.1 ndarray.shape

shape属性返回一个表示数组维度的元组。例如,对于一个二维数组,shape将返回(行数, 列数)

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)  # 输出: (2, 3)

2.2 ndarray.ndim

ndim属性返回数组的维度数。例如,一维数组的ndim为1,二维数组的ndim为2。

arr = np.array([1, 2, 3])
print(arr.ndim)  # 输出: 1

arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2.ndim)  # 输出: 2

2.3 ndarray.size

size属性返回数组中元素的总数。

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.size)  # 输出: 6

2.4 ndarray.dtype

dtype属性返回数组中元素的数据类型。

arr = np.array([1, 2, 3])
print(arr.dtype)  # 输出: int64

arr2 = np.array([1.0, 2.0, 3.0])
print(arr2.dtype)  # 输出: float64

2.5 ndarray.itemsize

itemsize属性返回数组中每个元素占用的字节数。

arr = np.array([1, 2, 3], dtype=np.int32)
print(arr.itemsize)  # 输出: 4

2.6 ndarray.data

data属性返回数组的内存缓冲区,通常用于低级操作。

arr = np.array([1, 2, 3])
print(arr.data)  # 输出: <memory at 0x7f8b8c0b5f40>

3. NumPy数组的形状变换函数

在实际应用中,我们经常需要对数组的形状进行变换。NumPy提供了多种形状变换函数,下面将详细介绍这些函数的使用方法。

3.1 reshape()

reshape()函数用于改变数组的形状,但不改变数组的数据。新形状的元素个数必须与原数组的元素个数相同。

arr = np.array([1, 2, 3, 4, 5, 6])
new_arr = arr.reshape(2, 3)
print(new_arr)
# 输出:
# [[1 2 3]
#  [4 5 6]]

如果指定的形状与数组的元素个数不匹配,将会抛出错误。

arr = np.array([1, 2, 3, 4, 5, 6])
# new_arr = arr.reshape(3, 3)  # 这将抛出错误

3.2 resize()

resize()函数与reshape()类似,但resize()可以改变数组的大小。如果新形状的元素个数大于原数组的元素个数,resize()会用0填充多余的部分。

arr = np.array([1, 2, 3, 4, 5, 6])
new_arr = np.resize(arr, (3, 3))
print(new_arr)
# 输出:
# [[1 2 3]
#  [4 5 6]
#  [0 0 0]]

3.3 flatten()

flatten()函数将多维数组展平为一维数组。

arr = np.array([[1, 2, 3], [4, 5, 6]])
new_arr = arr.flatten()
print(new_arr)  # 输出: [1 2 3 4 5 6]

3.4 ravel()

ravel()函数与flatten()类似,也是将多维数组展平为一维数组。不同的是,ravel()返回的是数组的视图,而flatten()返回的是数组的副本。

arr = np.array([[1, 2, 3], [4, 5, 6]])
new_arr = arr.ravel()
print(new_arr)  # 输出: [1 2 3 4 5 6]

3.5 transpose()

transpose()函数用于转置数组,即将数组的行和列互换。

arr = np.array([[1, 2, 3], [4, 5, 6]])
new_arr = arr.transpose()
print(new_arr)
# 输出:
# [[1 4]
#  [2 5]
#  [3 6]]

3.6 swapaxes()

swapaxes()函数用于交换数组的两个轴。

arr = np.array([[1, 2, 3], [4, 5, 6]])
new_arr = arr.swapaxes(0, 1)
print(new_arr)
# 输出:
# [[1 4]
#  [2 5]
#  [3 6]]

3.7 squeeze()

squeeze()函数用于移除数组中的单维度条目。

arr = np.array([[[1, 2, 3]]])
print(arr.shape)  # 输出: (1, 1, 3)

new_arr = np.squeeze(arr)
print(new_arr.shape)  # 输出: (3,)

3.8 expand_dims()

expand_dims()函数用于在指定位置插入新的维度。

arr = np.array([1, 2, 3])
new_arr = np.expand_dims(arr, axis=0)
print(new_arr.shape)  # 输出: (1, 3)

3.9 repeat()

repeat()函数用于重复数组的元素。

arr = np.array([1, 2, 3])
new_arr = np.repeat(arr, 3)
print(new_arr)  # 输出: [1 1 1 2 2 2 3 3 3]

3.10 tile()

tile()函数用于重复整个数组。

arr = np.array([1, 2, 3])
new_arr = np.tile(arr, 3)
print(new_arr)  # 输出: [1 2 3 1 2 3 1 2 3]

4. 总结

本文详细介绍了NumPy数组的常用属性以及形状变换函数。通过掌握这些属性和函数,读者可以更灵活地操作NumPy数组,从而在数据科学、机器学习等领域中更好地应用NumPy。希望本文能帮助读者更好地理解和使用NumPy。

推荐阅读:
  1. ShaderLab学习小结(二)通过Shader变换物体形状
  2. cursor属性改变光标形状的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

numpy

上一篇:C语言异常处理机制怎么实现

下一篇:bitcoin-cli命令怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》