[Python] numpy - 如何对数组进行降维或者升维

本文详细介绍了数组升维(如使用reshape、newaxis和expand_dims)以及降维(如flatten、ravel和squeeze)在编程特别是NumPy中的实现,强调了这些操作在机器学习中的应用,如特征向量表示和数据简化处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是数组升维?

数组升维是指将原本低维数组转换为更高维的数组的操作。在编程中,数组是一种存储多个相同类型数据的连续内存空间。升维操作可以通过添加额外的维度来增加数组的维数。

举个例子,将一个一维数组升维为二维数组可以使用reshape函数或者使用嵌套列表的方式表示。假设有一个一维数组[1, 2, 3, 4, 5],升维为二维数组可以表示为[[1, 2, 3, 4, 5]]。

升维的目的可以是为了更好地符合计算需求,例如在机器学习中,多维数组往往可以方便地表示多个样本的特征向量。

什么是数组降维?

数组降维是指将原本高维数组转换为更低维的数组的操作。在编程中,数组是一种存储多个相同类型数据的连续内存空间。降维操作可以通过减少数组的维数来实现。

举个例子,将一个二维数组降维为一维数组可以使用flatten函数或者使用迭代的方式获取每个元素。假设有一个二维数组[[1, 2, 3], [4, 5, 6]],降维为一维数组可以表示为[1, 2, 3, 4, 5, 6]。

降维的目的可以是为了简化数据结构或者减少维度对数据处理的复杂性。在数据分析和机器学习中,降维也可以用来减少特征维度,提高算法的效率和准确性。

Numpy中如何进行数组升维?

在NumPy中,可以使用多种方法进行数组的升维操作。下面是一些常用的方法:

reshape函数

通过改变数组的形状来实现升维操作。可以指定新的维度大小,保证原始数组的元素总数与新数组的元素总数一致。例如,将一个一维数组升维为二维数组可以使用reshape函数。

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = arr.reshape((2, 3))
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

newaxis关键字

可以在指定的位置插入一个新的维度。可以通过使用None或者np.newaxis来实现。例如,将一个一维数组升维为二维数组可以使用newaxis关键字。

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = arr[np.newaxis, :]
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

expand_dims函数

在指定的位置插入一个新的维度。可以通过指定axis参数来确定插入的位置。例如,将一个一维数组升维为二维数组可以使用expand_dims函数。

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = np.expand_dims(arr, axis=0)
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

new_arr = np.expand_dims(arr, axis=1)
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

这些方法可以根据需要选择合适的方式对数组进行升维操作。

Numpy中如何进行数组降维?

在NumPy中,可以使用多种方法进行数组的降维操作。下面是一些常用的方法:

flatten函数

将多维数组降为一维数组。该函数会将数组展平,并返回一个新的一维数组。

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = arr.flatten()
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

ravel函数

将多维数组降为一维数组。该函数与flatten函数功能类似,但是返回的是一个视图(view)而不是新的数组。

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = arr.ravel()
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

squeeze函数

去掉数组中维度为1的维度,将其降维。如果数组中有多个维度为1的维度,可以通过指定axis参数来指定要去除的维度。

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print('arr:', arr)
print('arr.shape:', arr.shape)
new_arr = np.squeeze(arr)
print('new_arr:', new_arr)
print('new_arr.shape:', new_arr.shape)

这些方法可以根据需要选择合适的方式对数组进行降维操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老狼IT工作室

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值