TOP

NumPy对数组的操作:创建、计算、合并等(二)
2019-09-04 01:00:12 】 浏览:66
Tags:NumPy 对数 操作 创建 计算 合并

6, 49]])


  array([[ 0, 2, 10, 9],


  [16, 5, 0, 42]])


  (3)矩阵*矩阵:


  # 要求a矩阵的行要等于b矩阵的列数;且a矩阵的列等于b矩阵的行数


  a=np.arange(8).reshape(2,4) # array([[0, 1, 2, 3], [4, 5, 6, 7]])


  b=np.random.randint(8,size=(4,2)) # array([[3, 0],[3, 3],[5, 6],[6, 7]])


  c1 = np.dot(a,b)


  c2 = a.dot(b)


  ----------------------


  # ab矩阵相乘的结果:c1=c2


  array([[ 31, 36],


  [ 99, 100]])


  (4)逻辑计算


  【注】列表是无法作为一个整体对其中的各个元素进行逻辑判断的!


  # 结果返回:一个数组,其中每个元素根据逻辑判断的布尔类型的结果


  a > 3


  -----------------------------


  # 结果如下:


  array([[False, False, False, False],


  [ True, True, True, True]])


  5. 取值


  获取一维数组中的某个元素:操作和list列表的index一样


  a = np.array([5, 2, 7, 0, 11])


  a[0] # 结果为 5


  a[:4] # 结果为 从头开始到索引为4结束


  a[2:] # 结果为 从索引为2的开始到结尾


  a[::2] # 结果为 从头开始到结尾,每2个取一个值


  获取多维数组的某个元素,某行或列值


  a = np.array([[32, 15, 6, 9, 14],


  [12, 10, 5, 23, 1],


  [2, 16, 13, 40, 37]])


  a[2,1] # 结果是一个元素 16


  a[2][1] # 结果是一个元素 16


  a[1] # 第2行 array([12, 10, 5, 23, 1])


  a[:,2] # 取出全部行,第2列 [15,10,16]


  a[1:3, :] # 取出[1,3)行,全部列


  a[1,1:] # array([10, 5, 23, 1])


  获取满足逻辑运算的


  # 需要注意的是,我们数据进行逻辑计算操作得到的仍然是一个数组


  # 如果我们想要的是一个过滤后的数组,就需要将"逻辑判断"传入数组中


  a = np.array([[32, 15, 6, 9, 14],


  [12, 10, 5, 23, 1],


  [2, 16, 13, 40, 37]])


  a[a > 3]


  a[(a > 3) | (a < 2)]


  ------------------------------


  # 结果分别是:


  array([32, 15, 6, 9, 14, 12, 10, 5, 23, 16, 13, 40, 37])


  array([32, 15, 6, 9, 14, 12, 10, 5, 23, 1, 16, 13, 40, 37])


  遍历:结果是按行输出


  a = np.array([[32, 15, 6, 9, 14],


  [12, 10, 5, 23, 1],


  [2, 16, 13, 40, 37]])


  for x in a:


  print(x)


  --------------------


  [32 15 6 9 14]


  [12 10 5 23 1]


  [ 2 16 13 40 37]


  6. 复制/分割/合并


  复制:arr.cope()


  分割:无锡看妇科的医院 http://www.ytsgfk120.com/


  (1)等分:np.split(arr, n, axis=0/1)(即行数或列数可以整除n时才可以)


  (2)不等分:np.array_split(arr, n) 默认按行分n份


  a = np.array([[32, 15, 6, 9, 14, 21],


  [12, 10, 5, 23, 1, 10],


  [2, 16, 13, 40, 37, 8]])


  # 可以看到a矩阵是(3*6),所以使用np.split()只能尝试行分成3份;或者列分成2/3/6份


  np.split(a,3,axis=0)


  np.split(a,3,axis=1)


  np.array_split(a,2)


  np.array_split(a,4,axis=1)


  -------------------------------------------


  [array([[32, 15, 6, 9, 14, 21]]),


  array([[12, 10, 5, 23, 1, 10]]),


  array([[ 2, 16, 13, 40, 37, 8]])]


  [array([[32, 15],


  [12, 10],


  [ 2, 16]]), array([[ 6, 9],


  [ 5, 23],


  [13, 40]]), array([[14, 21],


  [ 1, 10],


  [37, 8]])]


  [array([[32, 15, 6, 9, 14, 21],


  [12, 10, 5, 23, 1, 10]]), array([[ 2, 16, 13, 40, 37, 8]])]


  [array([[32, 15],


  [12, 10],


  [ 2, 16]]), array([[ 6, 9],


  [ 5, 23],


  [13, 40]]), array([[14],


  [ 1],


  [37]]), array([[21],


  [10],


  [ 8]])]


  合并:np.concatenate((arr1,arr2,arr3), axis=0/1) 默认接在数据下面


  a=np.random.rand(2,3)


  b=np.random.randint(1,size=(2,3))


  np.concatenate((a,b,a)) # 接在下面


  np.concatenate((a,b,a),axis=1) # 接在后面


  ------------------------


  array([[0.95912866, 0.81396527, 0.809493 ],


  [0.4539276 , 0.24173315, 0.63931439],


  [0. , 0. , 0. ],


  [0. , 0. , 0. ],


  [0.95912866, 0.81396527, 0.809493 ],


  [0.4539276 , 0.24173315, 0.63931439]])


  array([[0.95912866, 0.81396527, 0.809493 , 0. , 0. ,


  0. , 0.95912866, 0.81396527, 0.809493 ],


  [0.4539276 , 0.24173315, 0.63931439, 0. , 0. ,


  0. , 0.4539276 , 0.24173315, 0.63931439]])



NumPy对数组的操作:创建、计算、合并等(二) https://www.cppentry.com/bencandy.php?fid=54&id=250038

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python3使用PySynth制作音乐 下一篇ZooKeeper异步调用命令