numpy 中的三个特别的索引操作 c_, r_, s_

举报
tsinghuazhuoqing 发表于 2022/02/11 22:07:52 2022/02/11
【摘要】 简 介: 在numpy中对于矩阵存在r_,c_,s_三个操作,r_是基本的操作,c_是相当于r_[’-1,2,0’,a,a]的操作,s_则只是生成索引的操作。 关键词: 矩阵链接操作 ...

简 介: 在numpy中对于矩阵存在r_,c_,s_三个操作,r_是基本的操作,c_是相当于r_[’-1,2,0’,a,a]的操作,s_则只是生成索引的操作。

关键词 矩阵链接操作

三个索引操作
目 录
Contents
简单来看
r_ 操作
s_ 操作
总 结

 

§01 个索引操作


1.1 简单来看

1.1.1 对于1D数组

  这三个用于对numpy中array的操作,并不是函数,而是对阵列进行链接操作。

from numpy import *

a = array([1,2,3,4])
b = array([5,6,7,8])
c = r_[a,b]
d = c_[a,b]
print("c: {}".format(c),"d: {}".format(d))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
c: [1 2 3 4 5 6 7 8]
d: [[1 5]
 [2 6]
 [3 7]
 [4 8]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

1.1.2 对于2D数组

(1)1×N数组

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *

a = array([[1,2,3,4]])
b = array([[5,6,7,8]])
c = r_[a,b]
d = c_[a,b]
print("c: {}".format(c),"d: {}".format(d))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
c: [[1 2 3 4]
 [5 6 7 8]]
d: [[1 2 3 4 5 6 7 8]]

  
 
  • 1
  • 2
  • 3

(2)N×1数组

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *

a = array([1,2,3,4]).reshape(4,1)
b = array([5,6,7,8]).reshape(4,1)
c = r_[a,b]
d = c_[a,b]
print("c: {}".format(c),"d: {}".format(d))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
c: [[1]
 [2]
 [3]
 [4]
 [5]
 [6]
 [7]
 [8]]
d: [[1 5]
 [2 6]
 [3 7]
 [4 8]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

(3)N×M数组

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *

a = array([1,2,3,4]).reshape(2,2)
b = array([5,6,7,8]).reshape(2,2)
c = r_[a,b]
d = c_[a,b]
print("c: {}".format(c),"d: {}".format(d))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
c: [[1 2]
 [3 4]
 [5 6]
 [7 8]]
d: [[1 2 5 6]
 [3 4 7 8]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

1.2 r_ 操作

1.2.1 组合成一组

aa = r_[array([1,2,3]),0,0,array([4,5,6])]
print("aa: {}".format(aa))

  
 
  • 1
  • 2
aa: [1 2 3 0 0 4 5 6]

  
 
  • 1
aa = r_[-1:1:6j, [0]*3, 5, 6]
print("aa: {}".format(aa))

  
 
  • 1
  • 2
aa: [-1.  -0.6 -0.2  0.2  0.6  1.   0.   0.   0.   5.   6. ]

  
 
  • 1

1.2.2 带有字符串

  按照最后索引进行连接:

a = array([[0,1,2],[3,4,5]])
print("a: {}".format(a))
aa = r_['-1',a,a]
print("aa: {}".format(aa))

  
 
  • 1
  • 2
  • 3
  • 4
a: [[0 1 2]
 [3 4 5]]
aa: [[0 1 2 0 1 2]
 [3 4 5 3 4 5]]

  
 
  • 1
  • 2
  • 3
  • 4
a = array([[0,1,2],[3,4,5]])
print("a: {}".format(a))
aa = r_['0',a,a]
print("aa: {}".format(aa))

  
 
  • 1
  • 2
  • 3
  • 4
a: [[0 1 2]
 [3 4 5]]
aa: [[0 1 2]
 [3 4 5]
 [0 1 2]
 [3 4 5]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
a = array([[0,1,2],[3,4,5]]).reshape(6)
print("a: {}".format(a))
aa = r_['0,2',a,a]
print("aa: {}".format(aa))

  
 
  • 1
  • 2
  • 3
  • 4
a: [0 1 2 3 4 5]
aa: [[0 1 2 3 4 5]
 [0 1 2 3 4 5]]

  
 
  • 1
  • 2
  • 3
a = array([[0,1,2],[3,4,5]]).reshape(6)
print("a: {}".format(a))
aa = r_['r',a,a]
print("aa: {}".format(aa))

  
 
  • 1
  • 2
  • 3
  • 4
a: [0 1 2 3 4 5]
aa: [[0 1 2 3 4 5 0 1 2 3 4 5]]

  
 
  • 1
  • 2
a = array([[0,1,2],[3,4,5]]).reshape(6)
print("a: {}".format(a))
aa = r_['c',a,a]
print("aa: {}".format(aa))

  
 
  • 1
  • 2
  • 3
  • 4
a: [0 1 2 3 4 5]
aa: [[0]
 [1]
 [2]
 [3]
 [4]
 [5]
 [0]
 [1]
 [2]
 [3]
 [4]
 [5]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
a = array([[0,1,2],[3,4,5]]).reshape(6)
print("a: {}".format(a))
aa = r_['1,2,0',a,a]
print("aa: {}".format(aa))

  
 
  • 1
  • 2
  • 3
  • 4
a: [0 1 2 3 4 5]
aa: [[0 0]
 [1 1]
 [2 2]
 [3 3]
 [4 4]
 [5 5]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
a = array([[0,1,2],[3,4,5]]).reshape(6)
print("a: {}".format(a))
aa = r_['0,2,0',a,a]
print("aa: {}".format(aa))

  
 
  • 1
  • 2
  • 3
  • 4
a: [0 1 2 3 4 5]
aa: [[0]
 [1]
 [2]
 [3]
 [4]
 [5]
 [0]
 [1]
 [2]
 [3]
 [4]
 [5]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

  通过上面例子可以看到, c_[a,a] 操作相当于 r_[’-1,2,0’,a,a]的操作。

1.3 s_ 操作

  • index_exp
      Predefined instance that always returns a tuple: index_exp = IndexExpression(maketuple=True).

  • s_
      Predefined instance without tuple conversion: s_ = IndexExpression(maketuple=False).

a = arange(0,10,1)
print("a: {}".format(a))
ac = s_[2::2]
b = a[ac]
print("b: {}".format(b))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
a: [0 1 2 3 4 5 6 7 8 9]
b: [2 4 6 8]

  
 
  • 1
  • 2

 

  结 ※


  numpy中对于矩阵存在r_,c_,s_三个操作,r_是基本的操作,c_是相当于r_[’-1,2,0’,a,a]的操作,s_则只是生成索引的操作。


■ 相关文献链接:

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/122870323

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。