赞
踩
# 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]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。