PY-NumPy | 索引与切片

#%% md

+

#%% md

# 索引与切片

#%% md

## 一维数组

#%%

import numpy as np 
np

#%%

a = np.random.randint(9, 100, 10)
a

#%%

a[0],a[-1]

#%%

a[[0,3,5, -1]]  # 取多个 索引,根据位置取相应的数据

#%%

a[3:6]  # 切片

#%%

a[3:6:2] # 也是切片 指定步长 2表示隔一个

#%%

a[::2]  # 从第一个开始取 取到最后 但具有步长

#%%

a[::3]  # 隔两格

#%%

a[::-1]  # 反过来取 数组反转

#%%

a[::-3]  # 隔2格

#%% md

## 二维数组

#%%

a = np.random.randint(0, 100, (3,5))
a

#%%

a[1,3]  # 索引第一个是0,索引1是第二行,3是第四个元素

#%%

a[1,[1,2]]  # 获取第二行的索引1和2的元素

#%%

a[[1,2],3:]  # 第二行 3, 4; 第三行 3,4 (第一个中括号行数, 第二个是取的范围)

#%%

a[[0,2],::2]  # 取 第一行 和第行 隔列取 取每行相同索引

#%%

a[[1,1,2,2],[1,2,3,4]]  # 取不同索引 一个数组是行 一个数组四列

#%%

a[[1,2]][:,[3,4]]  # 取第一行第二行 取指定索引(取相同索引)

#%%

a[[0,2]][:, [0,2,4]]

#%%

a[1,2]=1024  # 进行改相应索引
a

#%%

a[2,[2,4]]= 2048 # 第三行, 索引2,4的都进行改动
a 

#%% md

## 花式索引

#%%

a = np.random.randint(0, 100, 20)
a

#%%

a[[3,5,7]]  # 花式索引

#%%

cond = a > 60
a[cond]  # 布尔花式

#%%

cond1 = a < 30 
cond2 = a > 80
cond = cond1 | cond2  # 或运算 一个数只能有一个条件 不可能同时匹配 不能用 or
a[cond]

在这里插入图片描述
终于可以一张图过了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是Python脚本的代码实现: ```python import pandas as pd import numpy as np # 读取Excel表格数据 df = pd.read_excel('data.xlsx') # 对df第3、4列进行切片并转换为Numpy数组 df1 = df.iloc[:, 2:4] Nt = df1.to_numpy() # 构造逻辑数组TF TF = (df.iloc[:, 1] >= '2017-01-05') & (df.iloc[:, 1] <= '2017-01-16') # 取Nt中的第2列交易量数据并求和 S = np.sum(Nt[TF, 1]) ``` 其中,`data.xlsx`为Excel文件名,需与脚本文件在同一目录下,数据内容如下表所示: | | 证券代码 | 交易日期 | 开盘价 | 收盘价 | 成交量 | |----:|-----------:|-------------:|---------:|---------:|---------:| | 0 | 000001.SZ | 2017-01-01 | 9.015 | 9.135 | 41369147 | | 1 | 000001.SZ | 2017-01-02 | 9.125 | 9.145 | 31279458 | | 2 | 000001.SZ | 2017-01-03 | 9.135 | 9.205 | 35853284 | | 3 | 000001.SZ | 2017-01-04 | 9.195 | 9.285 | 49120563 | | 4 | 000001.SZ | 2017-01-05 | 9.265 | 9.335 | 36292827 | | 5 | 000001.SZ | 2017-01-06 | 9.345 | 9.345 | 33298541 | | 6 | 000001.SZ | 2017-01-07 | 9.345 | 9.325 | 27661429 | | 7 | 000001.SZ | 2017-01-08 | 9.305 | 9.305 | 23578492 | | 8 | 000001.SZ | 2017-01-09 | 9.305 | 9.295 | 28381210 | | 9 | 000001.SZ | 2017-01-10 | 9.285 | 9.285 | 23332994 | | 10 | 000001.SZ | 2017-01-11 | 9.285 | 9.255 | 30532268 | | 11 | 000001.SZ | 2017-01-12 | 9.245 | 9.265 | 30256835 | | 12 | 000001.SZ | 2017-01-13 | 9.255 | 9.285 | 25590016 | | 13 | 000001.SZ | 2017-01-14 | 9.285 | 9.285 | 23437613 | | 14 | 000001.SZ | 2017-01-15 | 9.285 | 9.255 | 21612629 | | 15 | 000001.SZ | 2017-01-16 | 9.245 | 9.255 | 19026631 | | 16 | 000001.SZ | 2017-01-17 | 9.245 | 9.275 | 26721488 | | 17 | 000001.SZ | 2017-01-18 | 9.285 | 9.285 | 29078538 | | 18 | 000001.SZ | 2017-01-19 | 9.285 | 9.275 | 28156592 | | 19 | 000001.SZ | 2017-01-20 | 9.275 | 9.295 | 24211393 | ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CY3761

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

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

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

打赏作者

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

抵扣说明:

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

余额充值