python基础练习七 瞌睡龙龙

在Python 下对一个二维列表,l1=[[1,2,3],[4,5,6]],然后进行每个元素+1 的操作。

import numpy as np
l1=[[1,2,3],[4,5,6]]

用python循环

for x in l1:
    for y in range(len(x)):
        x[y]+=1
l1

用map

def f(s):
    for i in range(len(s)):
        s[i]+=1
        print(s[i])
        return s
l2=list(map(f,l1))
l2

用np

n1=np.array(l1)
n1
n1+1

对arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]进行行列互转

在 python下

arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]
l1=list(arr)
l2=list(zip(*l1))
l2

在np下

n1=np.array(arr)
np.transpose(n1)

在Python 下对一个二维列表,l1=[[1,2,3],[4,5,6]],要求求出按行与按列求和。

l2=[[1,2,3],[4,5,6]]
l3=[]
l4=[]
l5=[]
for i in range(len(l2)):
    l3.append(sum(l2[i][0:]))
print('行和:',l3)
l4=list(zip(*l2))
for i in range(len(l4)):
    l5.append(sum(l4[i][0:]))
print('列和:',l5)

在numpy 下对一个二维列表,l1=[[1,2,3],[4,5,6]],要求求出按行与按列求和。

n1=np.array(l2)
print('行和:',np.sum(n1,axis=1))
print('列和:',np.sum(n1,axis=0))

使用Numpy 创建一个多维数组,请输出以下属性

import numpy as np
n1=np.array([[[1,2,3],
             [3,4,5]]
            ,
            [[5,6,7],
            [7,8,9]]
            ,
            [[9,10,11],
             [11,12,13]]])
n1.shape  #形状
n1.ndim   #维度
n1.size   #个数
n1.dtype  #数据类型

创建一个包含从数字1 到60,的数组,并将于其形状变为为(3,2,10)的三维数组

n2=np.arange(60).reshape(3,2,10)
n2
n2[:][1]    #第0 维度中第二个元素的所有的信息
n2[:,0:]    #第0 维度中所有元素的全部第0 个维度(行)
n2[:,:,5:7]   #最后一个维度(列)6-7 列
n2=n2.flatten()
np.random.shuffle(n2)  #打乱矩阵内元素的顺序
n2=n2.reshape(6,-1)  #将该数组降维至二维
np.sort(n3,axis=0)   #按行维度进行排序
np.sort(n3,axis=1)   #按列维度进行排序
n3=np.transpose(n2)   #将降维后的数组进行行列转置
n3.flatten()        #将转至后的数组展平至一维数组。

拼接与切分NDArray 对象

import numpy as np
arr1=[[1,2,3],[4,5,6]]
arr2=[[7,8,9],[10,11,12]]
np.c_[arr1,arr2]       #横向拼接
arr3=np.r_[arr1,arr2]  #纵向拼接
arr3
a,b,c=np.hsplit(arr3,3)
print(a,'\n\n',b,'\n\n',c)  #垂直切割
print('--------')
m,n=np.vsplit(arr3,2)
print(m,'\n\n',n)          #水平切割
arr3.astype(np.int)
l1=list(arr3.flatten())    #转换为Python 列表,并指定数据类型为int
l1

数据导入导出

import numpy as np
n1=np.random.rand(3,5)
n1
n1[1,3]=998
n1
np.save('E:/pythondoc/python基础/n1',n1)   #保存
n2=np.load('E:/pythondoc/python基础/n1.npy')   #读入
n2
bool_n2=n2==998   #群体验证
bool_n2
n2[bool_n2]   #查找验证

使用numpy 实现softmax

import numpy as np
arr=np.random.randint(-100,100,[3,4])
print(arr)
s1=arr-(np.max(arr))      #减去最大数
s1=np.exp(s1)
SUM1=np.sum(s1,axis=1)    #按行求和
SUM2=SUM1.reshape(3,1)    #转置
SUM3 = np.c_[SUM2,SUM2,SUM2,SUM2]  #将和的数组扩至与s1行列一致
SUM3
np.divide(s1,SUM3)       #相除

导入文本文件中的股份数据,并将日期转为化对应周几后,再分别去计算从周一到周五的平均价,并找出周几平均价最高,周几的平均价去低

import numpy as np
import datetime
from datetime import date
c,v=np.loadtxt('e:/pythondoc/python基础/python-7.ibm.txt',delimiter='\t',usecols=(5,6),unpack=True,skiprows=1)

定义转换函数

def f(s):
    dt=datetime.datetime.strptime(s.decode('ascii'),'%Y/%m/%d').isoweekday()
    return dt

导出日期ndarray

d=np.loadtxt('e:/pythondoc/python基础/python-7.ibm.txt',converters={1: f},delimiter='\t',usecols=(1),unpack=True,skiprows=1)

与价格ndarray对应拼接

s=np.r_[d,c].reshape(2,-1)
l1=[]

开始迭代

for i in range(5):
    bool_d=d==i+1
    si=np.average(s[:,bool_d][1,:])
    print('星期',i+1,'的平均收盘价为:',si)
    l1.append(si)
print('星期',l1.index(max(l1))+1,'的平均收盘价最高为:',max(l1))
print('星期',l1.index(min(l1))+1,'的平均收盘价最低为:',min(l1))

在上一题的基础上选取有连续交易的三周时间(共计15 天)后,按周进行汇总要求得出每周的开,高,低,收。

o,h,l=np.loadtxt('e:/pythondoc/python基础/python-7.ibm.txt',delimiter='\t',usecols=(2,3,4),unpack=True,skiprows=1)
sw=np.r_[d,o,h,l,c].reshape(5,-1).T

先找符合条件的连续3周

sw[:,0][i]==5 and sw[:,0][i+15]==1
while True:
    sw1=sw[i-1:i+14,:]
    break
print(sw1)

定义函数

def fo():
    print('第1周的开、高、低、收为:',sw1[4,1],'/',np.max(sw1[0:4,2],0),'/',np.min(sw1[0:4,3],0),'/',sw1[0,-1])
    print('第2周的开、高、低、收为:',sw1[9,1],'/',np.max(sw1[5:9,2],0),'/',np.min(sw1[5:9,3],0),'/',sw1[5,-1])
    print('第3周的开、高、低、收为:',sw1[14,1],'/',np.max(sw1[10:14,2],0),'/',np.min(sw1[10:14,3],0),'/',sw1[10,-1])

导出结果

np.apply_along_axis(fo(),0,sw1)
已邀请:

ClownFish

赞同来自:


第一题的map方式实现,可以更精简一些,试试。

bool_n2=n2==998 #群体验证
这句看得我一愣,用得不错哈。

SOFTMAX实现了,再试试多行的softmax

这句用得很漂亮
与价格ndarray对应拼接s=np.r_[d,c].reshape(2,-1)

apply_along_axis函数最一题也用上了,很好。

整体作业不光对ndarray的概念,基本API掌握了,还通过股票统计量求值进行了综合运用。里边 有许多的没有提到的,比如skiprow,converter等自己也都摸索出来了。赞。

要回复问题请先登录注册

返回顶部