取索引值为2,4,6的列

取固定区域数据


根据坐标取值

data_1 = t1[2,4] # t1[num1,num2] 取行为num1,列为num2的数据print(t1[[0,1,2],[2,0,1]]) # 取坐标为(0,2)(1,0)(2,1)三个点

区域取值

print(t1[0:2,0:2]) # 第0行到第1行,第0列到第1列的交叉处的数据
import numpy as np

条件判断修改


print(a1<40)

对数组使用条件判断,即对数组中的所有数据进行条件判断,若符合条件则赋值为True,不符合赋值为False

print(a1[a1<40])
a1[ a1<40 ] = 20 # 讲a1数组中符合a1<40的数据赋值为20
print(a1)
where三元运算符

np.where(判断语句,data1,data2)

若数局符合判断条件,赋值为data1,否则赋值为data2

print(np.where(a2<30,0,30))

裁剪


array.clip(data1,data2) 将array中小于data1的数据赋值为data1,大于data2的数值赋值为data2

print(b1.clip(10,200))

获取最大值最小值的位置


获取最大值最小值的位置

res1 = np.argmax(c1,axis=0)

返回一个列表,里面是每一列的最大值位置

res2 = np.argmin(c1,axis=1)

返回一个列表,里面是每一行的最小值位置

print(res1)
print(res2)

创建全为0的数组


np.zeros( (a,b) ) a行b列的数组

zeroArray = np.zeros( (3,4) )
zeroArray = zeroArray.astype(int)
print(zeroArray)

创建全为1的数组


np.ones( (a,b) ) a行b列的数组

oneArray = np.ones( (3,4) ).astype(int)
print(oneArray)

创建对角线为1的方阵


创建一个对角线为1的正方形数组

np.eye(num) 边长为num,对角线为1,其他全为0的方阵

print(np.eye(5).astype(int))

水平拼接


np.hstack( (array1,array2) )

print(np.hstack((a1,a2)))

竖直拼接


np.vstack( (array1,array2) )

print(np.vstack((a1,a2)))

行交换


b1[[1,2],:] = b1[[2,1],:]

交换索引值为1和2的行数据

print(b1)

列交换


b2[:,[0,1]] = b2[:,[1,0]]

交换索引值为0和1的列数据

print(b2)

numpy中的nan和inf


  • nan(not a number):表示不是一个数字。当我们读取本地文件的数据为float类型时,如果有缺失,就会出现nan,活着做了一个不合适的计算的时候(如无穷大减去无穷大)
  • inf(infinity):表示正无穷,-inf表示负无穷。当一个数字除以0时,python中会报错,出现inf活着-inf

(一)将一个数据赋值为nan或者inf

data_1 = np.nan
data_2 = np.inf

data_1和data_2的数据类型都是float

(二)两个nan是不相等的

np.nan == np.nan

False

(三)检查数组中nan的个数

print(np.isnan(array_1))

将array_1判断是否为nan,并进行bool类型的赋值

print(np.count_nonzero(np.isnan(array_1)))

np.count_nonzero()返回数组中判断为True的数据个数

(四)出现nan时,为了防止影响均值,会将nan替换成均值,活着直接删除缺失值的一行

numpy常用统计函数


  • 求和:array.sum(axis=None)
  • 均值:array.mean(axis=None)
  • 中值:np.median(array,axis=None)
  • 最大值/最小值:array.max(axis=None) / array.min(axis=None)
  • 极差:np.ptp(array,axis=None)
  • 标准差(平均值分散程度):array.std(axis=None)

案例:将数组中的nan替换为行或列的均值

===============================================================================

import numpy as np
def fillNaNwithMeanValue(array_1):
‘’’
将array中的nan替换为每一列的均值
:param array_1: 未处理数组
:return: array_1 处理后数组
‘’’
for i in range(array_1.shape[1]): #a1.shape[1]为a1的列数
colItem = array_1[:,i] # colItem为当前这一列