数据分析前期准备-numpy-索引

'''
numpy 索引及切片

基本索引及切片/布尔型索引及切片
'''
# 基本索引及切片

import numpy as np

ar1 = np.arange(1,20)
print(ar1)
print(ar1[4])
print(ar1[3:6])
print('------')
# 一维数组索引及切片

ar2 = np.arange(16).reshape(4,4)
print(ar2,f'数组轴数为{ar2.ndim}') # 4*4 的数组
print(ar2[2],f'数组轴数为{ar2[2].ndim}') # 切片为下一维度的一个元素,所以是一维数组
print(ar2[2][1]) # 二次索引,得到一个一维数组的一个值
print(ar2[1:3],f'数组的轴数为{ar2[1:3].ndim}') #  切片为两个一维数组组成的二维数组
print(ar2[2,2]) # 切片数组中的第三行第三列 -> 10
print(ar2[:2,1:]) # 切片数组中的1、2行,2、3、4列 -> 二维数组
print('-----------')
# 二维数组索引及切片

ar3 = np.arange(8).reshape(2,2,2)
print(ar3,f'数组轴数为{ar3.ndim}') # 两个2*2 的数组
print(ar3[0],f'数组的轴数为{ar3[0].ndim}') # 三维数组的下一个维度是一个元素 -> 一个二维数组
print(ar3[0][0],f'数组的轴数为{ar3[0][0].ndim}') # 三维数组的下一个维度的第一个元素下的第一个元素 -> 一个一维数组
print(ar3[0][0][1],f'数组的轴数为{ar3[0][0][1].ndim}') # 三维数组的下一个维度的第一个元素下的第一个元素 -> 一个一维数组 -> 一个元素
# 三维数组索引及切片
# 布尔型索引及切片

import numpy as np

ar1 = np.arange(12).reshape(3,4)
i = np.array([True,False,True])
j = np.array([True,True,False,False])
print(ar1)
print(i)
print(j)
print(ar1[i,:]) # 在第一维度做判断,只保留True,这里第一维度就是行,ar[i] (简单书写模式)
print(ar1[:,j]) # 在第一维度做判断,这里如果 ar[;,i]会有警告,因为i是三个元素,而ar1在列上有4个
print('------------')
# 布尔型索引:以布尔型的矩阵去做筛选

m = ar1 > 5
print(m) # 这里m是一个判断矩阵
print(ar1[m]) # 用m判断矩阵去筛选ar1 数组中 >5 的元素 -> 后面的pands判断方式原理来源于此
# 数组索引及切片的值更改,复制

import numpy as np
ar1 = np.arange(10)
print(ar)
ar1[5] = 100
ar1[7:9] = 200
print(ar1)
# 一个标量赋值给一个索引/切片时,会自动改变/传播原始数组

ar2 = np.arange(10)
b = ar2.copy()
b[7:9] = 200
print(ar2)
print(b)
# 复制
'''
作业1 :
按照要求创建数组,通过索引,其ar[4]/ar[:2,3:]/ar[3][2]分别是多少
[[0 1 2 3 4]
 [5 6 7 8 9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]
'''
import numpy as np
ar1 = np.arange(25).reshape(5,5)
print(ar1)
print(ar1[4])
print(ar1[:2,3:])
print(ar1[3][2])
'''
作业2:
按照要求创建数组,筛选出元素值大于5的值,并生成新的数组
[[0 1 2 3 4]
 [5 6 7 8 9]]
'''
import numpy as np
ar1 = np.arange(10).reshape(2,5)
print(ar1)
m = ar1 > 5
print(m)
print(ar1[m])

 

posted on 2020-03-14 15:33  纸上飞  阅读(247)  评论(0)    收藏  举报

导航