numpy学习:数据预处理

时间:2021-03-31 15:18:20

待处理的数据:150*150的灰度图片,除分析目标外,背景已经抹0

需要实现的目标:背景数字0不变,对其余数字做一个归一化处理

对list处理可以用

a=list(set(a)) # 实现了去除重复元素并排序

对array处理可以用np.unique()这个函数,可以去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表

import numpy as np
A = [1, 2, 2, 3, 4, 3]
a = np.unique(A)
print(a) # 输出为 [1 2 3 4]
a, b, c = np.unique(A, return_index=True, return_inverse=True)
print(a, b, c) # 输出为 [1 2 3 4], [0 1 3 4], [0 1 1 2 3 2]

之后可以根据排序出的数组求得最大值与除0外的最小值,在线性归一化中还遇到一个问题,如果保留0值不动,只对非0元素做(x-min)/(max-min)变换

发现一个函数非常适合了:np.where()

img = (img-min)/(max-min)
arr = np.where(img <= 1, img, 0)

numpy.where(condition, [x, y])

1、这里x,y是可选参数,condition是条件,这三个输入参数都是array_like的形式;而且三者的维度相同

2、当conditon的某个位置的为true时,输出x的对应位置的元素,否则选择y对应位置的元素;

3、如果只有参数condition,则函数返回为true的元素的坐标位置信息;

今天还学到了一个新函数记录一下:

np.maximum:(X, Y, out=None)

1、X 与 Y 逐位比较取其大者;

2、最少接收两个参数

总结:对numpy库还非常不熟悉,要慢慢学习。