当前位置: 首页 > article >正文

Numpy数组索引,切片

目录

 1、数组的索引、切片

2、形状修改

2.1、reshape产生新变量

2.2、resize对原来的值更改

2.3、对象.T 行列互换

3、类型修改

 4、数组去重


 

案例:随机生成8只股票2周的交易日涨幅数据

8只股票,两周(10天)的涨跌幅数据,如何获取?

  • 两周的交易日数量为:2 x 5 =10
  • 随机生成涨跌幅在某个正态分布内,比如均值0,方差1

股票涨跌幅数据的创建

#创建符合正态分布的8只股票10天的涨跌幅数据
stock_change = np.random.normal(0,1,(8,10))

 1、数组的索引、切片

获取第一个股票的前3个交易日的涨跌幅数据

stock_change = np.random.normal(0,1,(8,10))
print(stock_change)
#前两行,前三列
print(stock_change[0:2,0:3])

[[ 1.12394621 -1.04031368 0.36764702] [ 1.02665258 0.10936393 -0.60080044]]

 一维、二维、三维的数组如何索引?

#三维、一维
a1 = np.array([[[1,2,3],[4,5,6]],[[12,3,34],[5,6,7]]])
#返回结果
print(a1)

#索引,切片
print(a1[0,0,1])

[[[ 1 2 3] [ 4 5 6]] [[12 3 34] [ 5 6 7]]]

2

直接索引:先对行进行索引,再对列索引

高维数组索引,从宏观到微观

2、形状修改

2.1、reshape产生新变量

让刚才的股票行、日期列反过来,变成日期行,股票列

ndarray.reshape(shape[,order]) Returns an array containing the same data with a new shape.

stock_change = np.random.normal(0,1,(4,5))
print(stock_change)

stock_change1=stock_change.reshape((5,4))

print(stock_change1)

#数组的形状被修改为:(-1,10),-1:表示任意行,10列

stock_change2 = stock_change.reshape([-1,10])

print(stock_change2)


#结果:
[[-0.70266113  0.46159659 -0.57158758  1.14324823  0.58823451]
 [ 0.37716067  1.33302183  1.75063939 -0.74459641 -0.09467174]
 [-1.0439025  -1.59436974 -2.2568172   0.054607    1.48849735]
 [-0.55605432 -0.0989349  -0.24215587 -0.9290203   0.24837257]]

[[-0.70266113  0.46159659 -0.57158758  1.14324823]
 [ 0.58823451  0.37716067  1.33302183  1.75063939]
 [-0.74459641 -0.09467174 -1.0439025  -1.59436974]
 [-2.2568172   0.054607    1.48849735 -0.55605432]
 [-0.0989349  -0.24215587 -0.9290203   0.24837257]]

[[-0.91604531  0.06804916  1.78633022 -0.58213791  0.62690856 -0.36411872
   0.34743397  0.6593866   0.80505992 -0.32396958]
 [ 0.49811428  0.58661614  0.61119679 -2.71677913 -0.23923261  0.49370257
   1.87903936 -0.42859548 -0.18577446  0.90177403]]

2.2、resize对原来的值更改

stock_change = np.random.normal(0,1,(4,5))
print(stock_change)
stock_change.resize([5,4])
print(stock_change)

#结果
[[-0.57182911 -1.77164866  1.18507269  0.33190734 -0.00394657]
 [-0.42081382 -0.80186828  1.55734915 -0.28490936  0.16291166]
 [ 1.57257788 -0.14054978  1.68932649 -0.30459803 -0.45543504]
 [-0.6768611   0.32870436  0.53034852 -0.66281005 -1.2117197 ]]

[[-0.57182911 -1.77164866  1.18507269  0.33190734]
 [-0.00394657 -0.42081382 -0.80186828  1.55734915]
 [-0.28490936  0.16291166  1.57257788 -0.14054978]
 [ 1.68932649 -0.30459803 -0.45543504 -0.6768611 ]
 [ 0.32870436  0.53034852 -0.66281005 -1.2117197 ]]

2.3、对象.T 行列互换

stock_change = np.random.normal(0,1,(4,5))
print(stock_change)

print(stock_change.T)

#结果
[[-0.86553816  0.55346042  0.56523021 -0.09101496  0.0197601 ]
 [-0.90455738  1.06210378  1.09616162  0.92801266 -1.28119137]
 [-1.26146448 -1.26698952  0.58345693 -1.56389163  0.38198146]
 [-0.01172948 -1.29798964  0.17463605  0.49773272  0.78079976]]

[[-0.86553816 -0.90455738 -1.26146448 -0.01172948]
 [ 0.55346042  1.06210378 -1.26698952 -1.29798964]
 [ 0.56523021  1.09616162  0.58345693  0.17463605]
 [-0.09101496  0.92801266 -1.56389163  0.49773272]
 [ 0.0197601  -1.28119137  0.38198146  0.78079976]]

3、类型修改

 1)ndarray.astype(type) 指定类型

stock_change = np.random.normal(0,1,(4,5))
print(stock_change.dtype)
#num = np.array(stock_change)[0,0]
#print(type(num))
print(stock_change.astype(np.int32))

2)ndarray.tostring()数组转换字符串

arr = np.array([[[1,2,3],[4,5,6]],[[12,13,14],[5,6,7]]])
print(arr.tostring())

#结果
b'\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00'

 4、数组去重

arr = np.array([[[1,2,3],[4,5,6]],[[12,13,14],[5,6,7]]])
print(np.unique(arr))

http://www.kler.cn/a/447812.html

相关文章:

  • LeetCode题练习与总结:预测赢家--486
  • Java实现贪吃蛇游戏
  • [python] 基于matplotlib实现雷达图的绘制
  • TDesign:NavBar 导航栏
  • Word图片嵌入格式不正确的解决办法
  • Spring Cloud Gateway 源码
  • 2025年西安市科技创新奖励补贴政策一览
  • Android10 rk3399 隐藏截屏功能
  • ISO/IEC 25010:2023 系统和软件的质量模型(产品质量模型)
  • 第二十六周学习周报
  • c语言图书信息管理系统源码
  • YOLOv8改进,YOLOv8引入Hyper-YOLO的MANet混合聚合网络+HyperC2Net网络
  • AI图像生成利器:Stable Diffusion 3.5本地运行与远程出图操作流程
  • Nginx - 负载均衡及其配置(Balance)
  • SVM理论推导
  • NLP自然语言学习路径图
  • MAC地址和IP地址的区别
  • 【HarmonyOs学习日志(14)】计算机网络之域名系统DNS
  • 【Pandas】pandas Series size
  • mysql,数据库数据备份
  • [Unity Shader]【游戏开发】【图形渲染】 Shader数学基础5-方阵、单位矩阵和转置矩阵
  • 地址栏输入URL浏览器会发生什么?
  • 有关异步场景的 10 大 Spring Boot 面试问题
  • CentOS 7 安装、测试和部署FastDFS
  • 在 K8S 中创建 Pod 是如何使用到 GPU 的: nvidia device plugin 源码分析
  • 得物Java后端一面,扛住了!