美文网首页
[numpy系列1]添加新的行或者列

[numpy系列1]添加新的行或者列

作者: 李庆文 | 来源:发表于2019-08-06 17:47 被阅读0次

在数据处理的时候经常会根据条件来添加行或者列,所以记录一下。

  1. np.c_:添加列
  2. np.r_: 添加行
    具体用法看下面的代码就比较清楚了。
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([[11,12,13],[14,15,16],[17,18,19]])
print("*********(a)**************")
print(a)
print("*********(b)**************")
print(b)
print("*********c_(a,b)**************")
np_c_ab = np.c_[a,b]
print(np_c_ab)
print("**********r_(a,b)***********")
np_r_ab = np.r_[a,b]
print(np_r_ab)

结果如下

*********(a)**************
[[1 2 3]
 [4 5 6]
 [7 8 9]]
*********(b)**************
[[11 12 13]
 [14 15 16]
 [17 18 19]]
*********c_(a,b)**************
[[ 1  2  3 11 12 13]
 [ 4  5  6 14 15 16]
 [ 7  8  9 17 18 19]]
**********r_(a,b)***********
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [11 12 13]
 [14 15 16]
 [17 18 19]]

如果要根据矩阵中数值的条件进行判断生成要添加的行或者列,可以参考下面的代码(以添加列为例)

print("a>5的索引")
print(np.where(a>5))

#新建一列narray
col_num = a.shape[1]
y_add = np.zeros((col_num,1),dtype=int)

print("第三列中数值>4的索引")
print(np.where(a[:,2]>4))

print("更改之前y_add \n",y_add)
y_add[np.where(a[:,2]>4),0]=1
print("更改之后y_add \n ",y_add)

print("a.shape: ",a.shape," ","y_add.shape: ",y_add.shape)
y = np.c_[a,y_add]
print("**********c_(a,y_add)***********")
print(y)

结果如下

a>5的索引
(array([1, 2, 2, 2]), array([2, 0, 1, 2]))
第三列中数值>4的索引
(array([1, 2]),)
更改之前y_add 
 [[0]
 [0]
 [0]]
更改之后y_add 
  [[0]
 [1]
 [1]]
a.shape:  (3, 3)   y_add.shape:  (3, 1)
**********c_(a,y_add)***********
[[1 2 3 0]
 [4 5 6 1]
 [7 8 9 1]]

这样就可以基本解决数值转换的问题了。

相关文章

网友评论

      本文标题:[numpy系列1]添加新的行或者列

      本文链接:https://www.haomeiwen.com/subject/wxiwdctx.html