您好,登录后才能下订单哦!
NumPy(Numerical Python)是Python中用于科学计算的核心库之一,提供了高性能的多维数组对象以及用于操作这些数组的工具。在数据科学、机器学习、图像处理等领域,NumPy都是不可或缺的工具。本文将详细介绍NumPy数组的属性以及常用的形状变换函数,帮助读者更好地理解和使用NumPy。
在NumPy中,数组(ndarray
)是最基本的数据结构。了解数组的属性是使用NumPy的基础。以下是NumPy数组的一些常用属性:
ndarray.shape
shape
属性返回一个表示数组维度的元组。例如,对于一个二维数组,shape
将返回(行数, 列数)
。
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # 输出: (2, 3)
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
ndarray.size
size
属性返回数组中元素的总数。
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.size) # 输出: 6
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
ndarray.itemsize
itemsize
属性返回数组中每个元素占用的字节数。
arr = np.array([1, 2, 3], dtype=np.int32)
print(arr.itemsize) # 输出: 4
ndarray.data
data
属性返回数组的内存缓冲区,通常用于低级操作。
arr = np.array([1, 2, 3])
print(arr.data) # 输出: <memory at 0x7f8b8c0b5f40>
在实际应用中,我们经常需要对数组的形状进行变换。NumPy提供了多种形状变换函数,下面将详细介绍这些函数的使用方法。
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) # 这将抛出错误
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]]
flatten()
flatten()
函数将多维数组展平为一维数组。
arr = np.array([[1, 2, 3], [4, 5, 6]])
new_arr = arr.flatten()
print(new_arr) # 输出: [1 2 3 4 5 6]
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]
transpose()
transpose()
函数用于转置数组,即将数组的行和列互换。
arr = np.array([[1, 2, 3], [4, 5, 6]])
new_arr = arr.transpose()
print(new_arr)
# 输出:
# [[1 4]
# [2 5]
# [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]]
squeeze()
squeeze()
函数用于移除数组中的单维度条目。
arr = np.array([[[1, 2, 3]]])
print(arr.shape) # 输出: (1, 1, 3)
new_arr = np.squeeze(arr)
print(new_arr.shape) # 输出: (3,)
expand_dims()
expand_dims()
函数用于在指定位置插入新的维度。
arr = np.array([1, 2, 3])
new_arr = np.expand_dims(arr, axis=0)
print(new_arr.shape) # 输出: (1, 3)
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]
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]
本文详细介绍了NumPy数组的常用属性以及形状变换函数。通过掌握这些属性和函数,读者可以更灵活地操作NumPy数组,从而在数据科学、机器学习等领域中更好地应用NumPy。希望本文能帮助读者更好地理解和使用NumPy。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。