金融数据分析与挖掘实战练习2.5-2.9

# 2.5.1数组切片
#满足条件的切片
import numpy as np
D = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]) #定义数组
print(D)
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [13 14 15 16]]
# 将D中的第0列大于5的所有列数据取出
D1 = D[D[ : ,0] > 5, : ]
print(D1)
[[ 9 10 11 12]
 [13 14 15 16]]
# 取D中第0列大于5的第2、3列数据
D2 = D[D[ : ,0] > 5,[2,3]]  #输出的是第2行的第2列数据和第3行的第3列数据
print(D2)
[11 16]
TF = [True,False,False,True]   #可以用逻辑真假来选择数组中的行或列
D3 = D[TF,:]
print(D3)
[[ 1  2  3  4]
 [13 14 15 16]]
# 取第0,3行的2,3列数据
D4 = D[TF,[2,3]]    #输出的是第0行的第2列数据和第3行的第3列数据
print(D4)
[ 3 16]
# 取D中大于4的所有元素
D5 = D[D[:,:] > 4]
print(D5)
[ 5  6  7  8  9 10 11 12 13 14 15 16]
D6 = D[D > 4]
print(D6)
[ 5  6  7  8  9 10 11 12 13 14 15 16]
#2.5.2 利用ix_()函数进行数组切片
# ix_()这个函数是直接构造行列的索引进行切片
# 提取D中行数为1,2,列数为1,3的所有元素
D7 = D[np.ix_([1,2],[1,3])]
print(D7)

[[ 6  8]
 [10 12]]
# 提取D中行数为0,1,列数为1,3的所有元素
D8 = D[np.ix_([0,1],[1,3])]
print(D8)

[[2 4]
 [6 8]]
D81 = D[np.ix_(np.arange(2),[1,3])]
print(D81)
[[2 4]
 [6 8]]
# 提取D中第一列小于11得到的逻辑数作为行索引,列数为1,2的所有元素
D9 = D[np.ix_(D[:,1] < 11,[1,2])]
print(D9)
[[ 2  3]
 [ 6  7]
 [10 11]]
D10 = D[np.ix_(TF,[2])] # 按照TF的逻辑值(真,假,假,真)作为行索引,第2列的所有值
print(D10)
[[ 3]
 [15]]
# 2.6 数组连接(分为行连接和列连接)
A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
# 行连接需要行数相同,列连接需要列数相同
C_S = np.hstack((A,B))
print(C_S)
[[1 2 5 6]
 [3 4 7 8]]
C_V = np.vstack((A,B))
print(C_V)
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
# 2.7 数据存储与调用
np.save("data",C_V)  # numpy下面的保存函数,第一个参数是文件名(自定义),第二个参数是要保存的变量名
# 保存后,如果需要调用查看,可用load函数加载
dy = np.load("data.npy")
print(dy)
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
# 2.8 改变数组的形态
#用 reshape 函数 来改变行列维度
arr = np.arange(12)
print(arr)
[ 0  1  2  3  4  5  6  7  8  9 10 11]
arr1 = arr.reshape(3,4) # 将原始1行12列的一维数组转变为3行4列的数组
print(arr1)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
arr2 = np.arange(12).reshape(3,4)  #也可以简单一步写出arr1
print(arr2)
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
arr3 = arr2.ravel() # ravel函数是将原mn维数组平展成1维数组
print(arr3)
[ 0  1  2  3  4  5  6  7  8  9 10 11]
# 2.9 数组排序与搜索
arr4 = np.array([5,8,3,12,7,9,32,65,22])
arr4s = np.sort(arr4)   #将数组按顺序排列
print(arr4s)
[ 3  5  7  8  9 12 22 32 65]
arr5 = arr4.reshape(3,3)
maxindex = np.argmax(arr4)
print(maxindex)   # 返回的是最大值的索引位置,如果存在多个最大(小),只返回第一次出现的结果
7
minindex = np.argmin(arr4)
print(minindex)   # 返回的是最小值的索引位置
2
print(arr5)
[[ 5  8  3]
 [12  7  9]
 [32 65 22]]
maxindex1 = np.argmax(arr5,axis = 0)
minindex1 = np.argmin(arr5,axis = 1)
print(maxindex1)  #返回各列的最大值索引位置
print(minindex1)  # 返回各行的最小值索引位置
[2 2 2]
[2 1 2]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哈伦2019

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

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

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

打赏作者

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

抵扣说明:

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

余额充值