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)
相关推荐
金銀銅鐵6 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
念何架构之路6 小时前
go-grpc设计思想
开发语言·后端·golang
system_error_x7 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
步行cgn9 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
码事漫谈9 小时前
AI 读你的提示词,其实很没耐心
后端
用户83562907805110 小时前
如何使用 Python 格式化 Excel 单元格中的长文本
后端·python
我命由我1234510 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
IT_陈寒10 小时前
Java性能优化完全指南
前端·人工智能·后端
电子IT笔记10 小时前
对接群晖NAS,上传和删除踩坑记录
前端·后端
Mk5987810 小时前
P4:把 Agent 的记忆搬进 Redis —— AgentScope-Java 工程化实战
后端