numpy实用数据处理技巧

目录

1.判断一个变量是不是为None: is / is not

2.np.array的拼接

3.np.array 整数类别转one hot编码

4.根据阈值threshold将某向量转换为所有元素为0或者1的二进制向量

5.Python numpy函数:zeros()、ones()、empty()

6.判断一个数是否在两个数之间

7.一维np array删除特定位置index的元素

8.找出满足条件的np array 索引

正文

1.判断一个变量是不是为None,注意 is / is not和==/!=的区别。

2.np.array的拼接


3.np.array 整数类别转one hot编码

import numpy as np
#需要转换的整数
y=np.array([0,1,2,2,1,1])
#设置类别的数量
num_classes =3
#将整数转为one hot编码
y_onehot=np.eye(num_classes)[y]

4.根据阈值threshold将某向量转换为所有元素为0或者1的二进制向量

通常用于将sigmoid的输出结果(概率)转化为预测标签。

例如:a= np . array ([0.1, 0.2, 0.3, 0.7, 0.8, 0.9]). 我想要的是根据阈值将此向量转换为二进制向量。 以阈值=0.5为例,大于0.5的元素转换为1,否则转换为0.

a=np.array([0.1, 0.2, 0.3, 0.7, 0.8, 0.9])
threshold=0.5
b=np.int64(a>= threshold)

执行上述语句之后,b的值就变成了array([0, 0, 0, 1, 1, 1], dtype=int64)。

5.Python numpy函数:zeros()、ones()、empty()

注意empty创建的数组中,包含的均是随机的无意义的数值。

import numpy as np
print('np.zeros([2,3]):\n',np.zeros([2,3]))
print('np.zeros([2,1]):\n',np.zeros([2,1]))
print('np.zeros([2,]):\n',np.zeros([2,]))
print('np.ones([2,3]):\n',np.ones([2,3]))
print('np.empty([2,3]):\n',np.empty([2,3]))
np.zeros([2,3]):
 [[0. 0. 0.]
 [0. 0. 0.]]
np.zeros([2,1]):
 [[0.]
 [0.]]
np.zeros([2,]):
 [0. 0.]
np.ones([2,3]):
 [[1. 1. 1.]
 [1. 1. 1.]]
np.empty([2,3]):
 [[1. 1. 1.]
 [1. 1. 1.]]

6.判断一个数是否在两个数之间

>>> import timeit
>>> timeit.timeit('1 <= plug < 5', setup='plug=3')  # plug in range
0.053391717400628654
>>> timeit.timeit('1 <= plug < 5', setup='plug=12')  # plug not in range
0.05137874743129345
>>> timeit.timeit('plug not in r', setup='plug=3; r=range(1, 5)')  # plug in range
0.11037584743321105
>>> timeit.timeit('plug not in r', setup='plug=12; r=range(1, 5)')  # plug not in range
0.05579263413291358

7.一维、多维np array删除特定位置index的元素

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
index = [2, 3, 6]
new_a = np.delete(a, index)