python test transpose hstack vstack...

一:test01

scss 复制代码
任务背景:使用 NumPy 提供的函数tolist()和compress()快速筛选数据和转换数据结构。
任务要求:
1、使用 NumPy 创建一个 3x4 的随机整数数组,模拟一个季度内四个地区每个月的销售额(单位:千元),数值范围在 10 到 100 之间,并打印输出。
import numpy as np
arr = np.random.randint(10, 100, (3, 4), dtype=np.int64)
print(arr)


2、使用 compress() 函数,从销售数据中提取出所有销售额大于 50 千元的值,并打印输出。
print("销售额大于50千元的值:",arr.compress((arr>50).flatten()))


3、使用 tolist() 方法将原始销售数据数组转换为 Python 列表,并打印输出。
ls = arr.tolist()
print(ls)
ls = list(range(1,5))
print(ls)
arr = np.arange(1,5)
print(arr)

二.

2.1. transpose 多维数组转置

scss 复制代码
创建一个三维数组2x2x3
arr = np.array([[np.arange(1,4),np.arange(4,7)],[np.arange(7,10),np.arange(10,13)]])
print(arr.shape)
2x3x2 转置
brr = arr.transpose(0,2,1)#(0,1,2,3,4,5)
print(arr)
print(brr)
print(brr.shape)

2.2. hstack vstack concatenate hsplit split vsplit split

scss 复制代码
arr = np.array([np.arange(1,4),np.arange(2,5)])
print(arr)
brr = np.array([np.arange(3,6),np.arange(4,7)])
print(brr)
h_array = np.hstack([arr,brr])
h_array=np.concatenate((arr,brr),axis=1)
print("按行拼接:\n",h_array)
h_array=np.hstack([arr,brr])
v_array = np.concatenate((arr,brr),axis=0)
print("按列拼接:\n",v_array)

2.3. 水平方向分割 hsplit split

scss 复制代码
ls1 = np.hsplit(h_array,3)
print(ls1)
ls2 = np.split(h_array,3,axis=1)
print(ls2)

2.4. 垂直方向 vsplit split

ini 复制代码
ls3 = np.vsplit(v_array,2)
print(ls3)
ls4 = np.split(v_array,2,axis=0)
print(ls4)

data=np.loadtxt(
     "test.csv",
     delimiter=",",
     encoding="thf-8",
     skiprows=1,
     dtype=np.int64
 )
print(data)
print(v_array)
np.savetxt(
     "data.csv",#文件名称
     v_array,#写入的数组
     encoding="utf-8",#文件编码
     delimiter=',',#分隔符
     fmt=%d,
     newlilne="\n",#换行符
     header="1月,2月,3月",
     footer="结尾",
     comments="#"#注释部分
 )

三.test02

ini 复制代码
#1.提取数据
closing_price = np.loadtxt(
    "stock.csv",
    dtype=np.float64,
    delimiter=',',
    encoding='utf-8',
    usecols=(2)
)
print(closing_price)

#2.计算均值 中位数 中位数所在的索引位置 方差
print("收盘价的均值为:",closing_price.mean())
print("收盘价的中位数为:",np.median(closing_price))
print("中位数所在的索引位置:",np.where(closing_price==23.95))
print("收盘的方差为:",closing_price.var())

#计算机最高价和最低价
high_price,low_price=np.loadtxt(
    "stock.csv",
    dtype=np.float64,
    delimiter=",",
    encoding="utf-8",
    usecols=(3,4),
    unpack=True
)

print("该股票最高价为:",high_price)
print("该股票最低价为:",low_price)

#计算股价最高值 最低值 中间值 价格波动范围
print("该股票的最高值为:",high_price.max())
print("该股票的最低值为:",low_price.max())
print("该股票的中间值为:",high_price.max()+low_price.max()/2)
print("该股票最高价为:",np.ptp(high_price))
print("该股票最低价为:",np.ptp(low_price))

#3.计算成交量加权平均值 时间加权平均值
#成交量 收盘价 分别读取出来
volime =  np.loadtxt(
    "stock.csv",
    dtype=np.float64,
    delimiter=",",
    encoding="utf-8",
    usecols=(11)
)
print("成交量:",volime)

#计算成交量的平均值
vwap = np.average(closing_price,weights=volime)
print("该股票的成交量加权平均值为%0.2f"% vwap)

#计算时间加权的平均值
t = np.arange(closing_price.shape[0])
print("时间序列为:",t)
twap = np.average(closing_price,weights=t)
print("该股票的时间加权平均值为%0.2f" % twap)

import datetime
def date2str(nowDate):
    #nowDate = str(nowDate,'GB2312')
    return datetime.datetime.strptime(\
        nowDate,"%Y/%m/%d").date().weekday()+1
        
 #读取日期
days = np.loadtxt(
    "stock.csv",
    delimiter=',',
    encoding='utf-8',
    dtype=np.int64,
    usecols=(1),
    converters={1: date2str}#将下标为1的这一列数据映射到date2str函数中
)
print("日期:",days)
#day_str = '2017/9/15'

#字符串转换成日期对象
#dt = datetime.datetime.strptime(day_str,'%Y/%m/%d')
#print(type(dt))
#print(dt.date().weekday()+1)

for i in range(days.size):
    print("发生交易的天数是星期%d,当天的收盘价为%0.2f"% (days[i],closing_price[i]))
    
#计算
price_avg = np.zeros(5)
for i in range(1,6):
    index = np.where(days==i)#获取所有礼拜一对应的下标
    print("所有礼拜",i,"对应的下标为: \n",index)
    price = np.take(closing_price,index)
    print("所有礼拜",i,"对应的收盘价为: \n",price)
    avg = price.mean()
    print("所有礼拜", i ,"对应的平均收盘价为:",price)
    price_avg[i-1] = avg
    print("星期",i,"对应的平均收盘价为: ",avg)
相关推荐
紫穹15 分钟前
012.今天我们来实现一个“自己的 GPT”
后端
tianming201917 分钟前
Gogs迁移到Gitea不完全指南
git·后端
洛卡卡了21 分钟前
当上传不再只是 /upload,我们是怎么设计大文件上传的
后端·面试·架构
oak隔壁找我25 分钟前
Spring AI 实现MCP简单案例
java·人工智能·后端
吴祖贤27 分钟前
5.2 Spring AI OpenAI 嵌入模型
后端
爱叫啥叫啥41 分钟前
C语言核心概念详解:指针的解引用,基本指针运算`*p++` 和 `(*p)++` 的区别
后端
申阳41 分钟前
Day 9:07. 基于Nuxt开发博客项目-工具箱整理
前端·后端·程序员
jtymyxmz1 小时前
1.1.4 Spring的下载及目录结构
java·后端·spring
robch1 小时前
Spring 的 DelegatingFilterProxy 用法
java·后端·spring
CodeSheep2 小时前
稚晖君公司的最新工资和招人标准
前端·后端·程序员