数据处理遇到的一些问题

关于np.concatenate拼接

问题描述
初学时总是分不清楚np.concatenate中axis的概念,需要理解并记忆

问题解决

  • 假如输入的是一个二维数组,那么拼接操作时,axis=0则意味着扩充shape[0]的这一维度,也就是说拼出来是“沿着上下在拼”
  • axis=1时,意味着扩充shape[1]的这个维度,也就是说拼出来是“沿着左右在拼”
    数据处理遇到的一些问题_第1张图片
  • 同样,numpy中的加减也是同样的道理:
matrix = [[1,2,3],[3,2,1]]
# axis=1代表消除的是纵轴的元素,处理后只剩下横轴,也就是对同一行的元素进行相加
# axis=0代表作用对象是横轴的元素,处理后只剩下纵轴,也就是对同一列的元素进行相加
np,sum(matrix, axis=1) 

  • 而在np.max(),np.min()等运算中,axis意味着:运算后,该轴的元素得到了消除,只剩下另外一轴的元素,例如:
a = np.array([[1,2,3],[3,4,5]])
np.max(a, axis=1) # 意味着该运算后,1轴不在了,剩下0轴,因此是在每一行找最大
np.max(a, axis=0) # 意味着该运算后,0轴不在了,剩下1轴,因此是在每一列找最大

关于Numpy中除数为0时的情况

问题描述
在处理连接矩阵时,需要计算矩阵的度Degree,这个时候有的点是完全孤立的,该节点不和其他任何一个节点有关联,因此此节点的度Degree=0。这时候,用关联矩阵除以度,就会出现除数为0的报错情况,导致值出现nan,截图如下:
在这里插入图片描述

问题解决

  • 第一步,让python忽略此情况,不要报错,代码是
np.seterr(divide='ignore', invalid='ignore')

但是,这样设置后结果中仍然会出现nan值

  • 第二步,用np.isnan()方法找到nan值,再替换掉nan值
degree[np.isnan(degree)] = 0

问题解决!

你可能感兴趣的:(我的笔记)