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)
相关推荐
shengjk14 小时前
搞不懂去中心化、主从架构和 HA?1 分钟理清关系,再也不怕被问架构设计
后端
PFinal社区_南丞4 小时前
开源开发者必备-toilet终端ASCII艺术字工具
后端
我不是混子4 小时前
Springboot整合Druid
后端
aiopencode4 小时前
API时代的调试革命,为什么未来的开发者都离不开Charles
后端
DBLens数据库管理和开发工具5 小时前
MySQL回表机制详解:一次查询背后的多次磁盘I/O
后端
用户68545375977695 小时前
⚔️ ReentrantLock大战synchronized:谁是锁界王者?
后端
Cache技术分享5 小时前
217. Java 函数式编程风格 - 从命令式到函数式:基于条件选择元素
前端·后端
用户68545375977695 小时前
CopyOnWriteArrayList:写时复制的艺术🎨
后端
用户68545375977695 小时前
线程安全过期缓存:手写Guava Cache🗄️
后端