结合金融场景演示NumPy模块的操作(二)

这篇博客详细介绍了如何在金融数据分析中使用NumPy进行数组的索引、切片和排序。通过实例展示了如何找到特定股票在特定日期的涨跌幅、提取指定行和列的数据,以及对股票涨跌幅进行排序的操作方法。

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

结合金融场景演示NumPy模块的操作(二)

 注意,NumPy 是 Python 的外部模块,因此使用时需要导入并且查看相应的版本信息,具体代码如下:

>>>import numpy as np    #导入NumPy模块,以np命名,因此后续使用该模块的功能时要用np而不是numpy
>>>np.__version__          #查看NumPy的版本号
'1.18.1'

一、数组的索引、切片和排序

 继续引用上篇例1,有:

>>>weight = np.array([0.15,0.2,0.25,0.4])  #创建4只股票配置比例的一维数组
>>>weight
array([0.15,0.2,0.25,0.4]) 
>>>return_list = [0.003731,0.021066,-0.004854,0.006098,-0.006060,-0.001838,0.001842,-0.016544,-0.003738,0.003752,-0.003087,-0.000344,-0.033391,0.007123,0.004597,-0.024112,0.011704,-0.029563,-0.014570,0.016129]
>>>return_array = np.array(return_list)     #转化为一维数组
>>>return_array = return_array.reshape(4,5)    #运用reshape(),转化为4行5列的二维数组
>>>return_array
array([[ 0.003731,  0.021066, -0.004854,  0.006098, -0.00606 ],
       [-0.001838,  0.001842, -0.016544, -0.003738,  0.003752],
       [-0.003087, -0.000344, -0.033391,  0.007123,  0.004597],
       [-0.024112,  0.011704, -0.029563, -0.01457 ,  0.016129]])

1.索引

索引的基本格式:return_array[x,y] return_array 为数组名(随不同数组而变),在中括号中,第一个参数代表的是第几行,第二个参数代表的是第几列,并且是从0开始。
 例:投资者希望找到工商银行这一股票在2018年9月5日的涨跌幅,对应于数组中的第2行第3列,具体代码如下:

>>>return_array[1,2]    # 索引数组中第2行第3列的数
-0.016544

 如果用户希望按照一定的规则找到数组中的索引值,则需要运用到where函数。在输出结果中,第一个数组代表行的索引值,第二个数组代表列的索引值。
 例:投资者希望找到涨跌幅低于-1%的数据所在数组中的索引值,具体代码如下:

>>>np.where(return_array<-0.01)   
(array([1, 2, 3, 3, 3], dtype=int64), array([2, 2, 0, 2, 3], dtype=int64))

2.切片

 切片的基本格式:return_array[a:b,c:d] return_array 为数组名(随不同数组而变),在中括号中,第一个参数代表从第a+1行开始到b行,第二个参数代表从第c+1列开始到第d列。
 例:投资者希望提取上汽集团、宝钢股份在2018年9月4日至6日的涨跌幅数据,也就是提取第3行、第4行中第2~4列的数据,具体代码如下:

>>>return_array[2:,1:4]
array([[-0.000344, -0.033391,  0.007123],
       [ 0.011704, -0.029563, -0.01457 ]])

 例:如果投资者希望分别提取第2行的全部数据和第3列的全部数据,具体代码如下:

>>>return_array[1]     #提取第2行的全部数据
array([-0.001838,  0.001842, -0.016544, -0.003738,  0.003752])
>>>return_array[:,2]   #提取第3列的全部数据
array([-0.004854, -0.016544, -0.033391, -0.029563])

3.排序

 对数据按照由小到大排序,需要运用sort函数,并且有参数axis=0或axis=1可以输入,其中,axis=0代表按列对元素排序,axis=1代表按行对元素排序,如果不输入参数,则默认按行对元素排序。
 例:投资者希望对股票按照日涨跌幅进行排序,具体代码如下:

>>>np.sort(return_array,axis=0)     #按列对元素由小到大排序
array([[-0.024112, -0.000344, -0.033391, -0.01457 , -0.00606 ],
       [-0.003087,  0.001842, -0.029563, -0.003738,  0.003752],
       [-0.001838,  0.011704, -0.016544,  0.006098,  0.004597],
       [ 0.003731,  0.021066, -0.004854,  0.007123,  0.016129]])
>>>np.sort(return_array,axis=1)     #按行对元素由小到大排序
array([[-0.00606 , -0.004854,  0.003731,  0.006098,  0.021066],
       [-0.016544, -0.003738, -0.001838,  0.001842,  0.003752],
       [-0.033391, -0.003087, -0.000344,  0.004597,  0.007123],
       [-0.029563, -0.024112, -0.01457 ,  0.011704,  0.016129]])
>>>np.sort(return_array)            #按行对元素由小到大排序
array([[-0.00606 , -0.004854,  0.003731,  0.006098,  0.021066],
       [-0.016544, -0.003738, -0.001838,  0.001842,  0.003752],
       [-0.033391, -0.003087, -0.000344,  0.004597,  0.007123],
       [-0.029563, -0.024112, -0.01457 ,  0.011704,  0.016129]])
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值