numpy 中的三个特别的索引操作 c_, r_, s_
【摘要】
简 介: 在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_则只是生成索引的操作。
关键词
: 矩阵链接操作
§01 三个索引操作
1.1 简单来看
1.1.1 对于1D数组
这三个用于对numpy中array的操作,并不是函数,而是对阵列进行链接操作。
- numpy.r_: 是把原数组按照行(row)进行串联; numpy.r_ : https://numpy.org/doc/stable/reference/generated/numpy.r_.html
- numpy.c_: 是吧原书按照列(column)串联; numpy.c_ : https://numpy.org/doc/stable/reference/generated/numpy.c_.html
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)