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)