开始接触数组进行编程的时候,很多数组操作用内置的函数就可以完成。但是工作中慢慢发现数组的操作很多,并不只是加减和转置就可以很好解决的。
因此开了这个博客,记录用到的一些命令。根据工作使用慢慢更新,也希望能帮助到一些朋友。一个数组的操作
1)将一个数插入一个数组中的任意位置。
nums_one = 999
out_tmp = [ data[:i]+[nums_one]+data[i:] for i in range(len(data)+1)]
python基本特性
数组的encode
快速将一维数组转化为二维
labels = [1, 3, 8]
labels = np.array(labels)[:, None]
[[1],
[3],
[8],]
然后可以快速将该数组进行encode,即将对应的坐标位置标为1,其余位置为0。这个在机器学习对指标的操作中很常见。当然你也可以利用现有的sklearn 这类包完成。enlabels = np.arange(8) == np.array(labels)[:, None]
# 改成float 型
enlabels = enlabels.astype(np.float32)
两个数组之间的操作
(1)一个二维数组与一维数组的运算。
有时候希望对二维数组中,没一行,或者每一列加减一个一维数组。这时候一维数组的长度与二维数组列/行相等。可以进行如下命令
# 创建二维数组 a = [[1,2,3,4,5]]*5 # 创建以为数组 b = np.arange(1,6,1) # 2D 数组每一行减去1D数组 print a-b[None,:] # 2D 数组每一列减去1D数组 print a-b[:,None]
(2) 查看一个数组中是否有包含在另外一个数组的元素。
# numpy的程序立刻搞定。返回布尔数组,长度与A相同,被元素B包含的元素的位置为True np.in1d(A, B)