Numpy数组的索引、切片、形状修改(reshape)、类型修改、数组的去重

本文详细介绍了Numpy数组的索引和切片方法,包括一维和多维数组的操作。接着讨论了如何通过reshape、resize和T属性来改变数组的形状,重点解析了reshape过程中的数据分布。同时,阐述了如何使用astype进行类型转换,并介绍了利用np.unique实现数组去重的技巧。

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

一、数组的索引、切片

  • 索引:通过下标访问数组元素
  • 切片: 用:来进行切片
  • 本质都是通过不同轴的元素下标来进行定位
    在这里插入图片描述
    二维数组索引方式:
  • 举例:获取第一个股票的前3个交易日的涨跌幅数据
# 二维的数组,两个维度 
stock_change[0, 0:3]

返回结果:

array([-0.03862668, -1.46128096, -0.75596237])

  • 三维数组索引方式:
# 三维
a1 = np.array([ [[1,2,3],[4,5,6]], [[12,3,34],[5,6,7]]])
# 返回结果
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[12,  3, 34],
        [ 5,  6,  7]]])
# 索引、切片
>>> a1[0, 0, 1]   # 输出: 2

二、形状修改

2.1 ndarray.reshape(shape, order)

  • 返回一个具有相同数据域,但shape不一样的视图
    在这里插入图片描述
# 在转换形状的时候,一定要注意数组的元素匹配
stock_change.reshape([5, 4])
stock_change.reshape([-1,10])  # 数组的形状被修改为: (2, 10), -1: 表示通过待计算

你有没有这个困惑:在 reshape 之后,数据在各个轴上是如何重新分配的?

搞清楚 ndarray 的数据在内存里的存放方式,以及各个维度的访问方式,reshape 困惑就迎刃而解了。

心法: ndarray 的数据在内存里以一维线性存放,reshape 之后,数据并没有移动,只是访问方式变了而已。

数据优先填充 X 轴向,其次 Y 轴,其次 Z 轴 。。。
在这里插入图片描述
在这里插入图片描述

2.2 ndarray.resize(new_shape)

  • 修改数组本身的形状(需要保持元素个数前后相同)
stock_change.resize([5, 4])

# 查看修改后结果
stock_change.shape
(5, 4)

2.3 ndarray.T

  • 数组的转置
  • 将数组的行、列进行互换

在这里插入图片描述

stock_change.T.shape
(4, 5)

三、类型修改

  • ndarray.astype(type)
  • 返回修改了类型之后的数组
stock_change.astype(np.int32)

四、数组的去重

  • np.unique()
temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
>>> np.unique(temp)
array([1, 2, 3, 4, 5, 6])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值