numpy.r_(numpy.c_)的用法

本文详细解释了NumPy库中的numpy.r_函数,特别是其参数如何控制级联数组的维度、维度长度调整和坐标轴位置。重点介绍了三个整数参数的作用,包括级联轴、最小维度和插入位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#要用到numpy.c_,查看官网说明,最后到了numpy.r_,没看懂,百度用法,屎里淘金,结果还没淘到,研究了一下,记个笔记记一下。(软件用的Jupyter)#

numpy.c_就是numpy.r_的一种参数下的用法,一种numpy.r_的特例。

numpy.r_()的参数分两部分,一个是一个字符串,内容是由逗号分隔的整数,例如,'-1,2,0',每个整数表示不同的设置。第二部分就是需要级联的数组了,可以多个,但需要注意维度。

        第一句话是关键,翻译过来是“由三个逗号分隔的整数组成的字符串允许指定连接的坐标轴、强制元素进入的最小维数,以及哪个坐标轴应该包含小于指定维数的数组的起始位置。”后面英语水平可以的自己看,不行的也可以不看。

1.第一个整数

        表示在哪个轴级联。在我看来这个轴就是维度。用.shape后得到各个维度的长度。

x_1 = np.random.randint(0, high=10, size=[2,3,4], dtype='l')
x_2 = np.random.randint(0, high=10, size=[2,3,4], dtype='l')
print('x_1.shape=',x_1.shape)
print('x_2.shape=',x_2.shape)
print('np.r_["0",x_1, x_2].shape=',np.r_['0',x_1, x_2].shape)
print('np.r_["1",x_1, x_2].shape=',np.r_['1',x_1, x_2].shape)
print('np.r_["2",x_1, x_2].shape=',np.r_['2',x_1, x_2].shape)
print('np.r_["-1",x_1, x_2].shape=',np.r_['-1',x_1, x_2].shape)
np.r_['0',x_1, x_2]
np.r_['1',x_1, x_2]
np.r_['2',x_1, x_2]
np.r_['-1',x_1, x_2]

        运行结果如上,就是将整数对应的维度的长度相加,具体结果自己试试,除了将要级联的维度,其它维度的长度需要保证相等,前面的整数也不能超过最大维度,比如这个写3会报错。

2.第二个整数

表示级联后结果的最小维度,比如设置为2,那么结果最小就是二维的,即使本身结果是一维的也会变成二维的。高于二维的则不受影响。

x_1 = np.random.randint(0, high=10, size=[2,3], dtype='l')
x_2 = np.random.randint(0, high=10, size=[2,3], dtype='l')
x_1
x_2
np.r_['1,1',x_1, x_2].shape
np.r_['1,1',x_1, x_2]
np.r_['1,2',x_1, x_2].shape
np.r_['1,2',x_1, x_2]
np.r_['1,3',x_1, x_2].shape
np.r_['1,3',x_1, x_2]
np.r_['1,4',x_1, x_2].shape
np.r_['1,4',x_1, x_2]

        需要级联的数组本身就是二维的,所以第二个整数是1和2的时候不影响结果,当为3和4时对结果造成影响。

        具体过程:如果第二个数的维度大于将要级联的数组的维度,那么就会对该数组进行处理,当为3时,将各维度长度为(2,3)的数组转换成各维度长度为(1,2,3),eg:(3,4)→(1,3,4)。当为4时,(3,4)→(1,1,3,4),就是这样进行处理,然后再按照第一个整数所指向的维度进行级联。

3.第三个整数

        用于修改在第二个整数转换各维度长度后,原先的维度在新维度的位置。下面数组维度为2长度为(2,3),级联后维度为3。

x_1 = np.random.randint(0, high=10, size=[2,3], dtype='l')
x_2 = np.random.randint(0, high=10, size=[2,3], dtype='l')
x_1
x_2
np.r_['0,4',x_1, x_2].shape
np.r_['1,4',x_1, x_2].shape
np.r_['3,4',x_1, x_2].shape
np.r_['2,4,-1',x_1, x_2].shape
np.r_['0,4,0',x_1, x_2].shape
np.r_['1,4,0',x_1, x_2].shape
np.r_['2,4,0',x_1, x_2].shape
np.r_['3,4,0',x_1, x_2].shape
np.r_['0,4,1',x_1, x_2].shape
np.r_['1,4,1',x_1, x_2].shape
np.r_['2,4,1',x_1, x_2].shape
np.r_['3,4,1',x_1, x_2].shape
np.r_['0,4,2',x_1, x_2].shape
np.r_['1,4,2',x_1, x_2].shape
np.r_['2,4,2',x_1, x_2].shape
np.r_['3,4,2',x_1, x_2].shape
#np.r_['0,4,3',x_1, x_2].shape

         第三个整数默认是“-1”,数组维度转换和上面介绍第二个整数时相同。二挡第三个整数为‘0’时,数组维度转换结果由原先的(1,1,2,3)变为(2,3,1,1),整数为‘1’时结果为(1,2,3,1);整数为‘2’时结果为(1,1,2,3)和‘-1’时相同,而为‘3’就会报错,因为2+3>4了,第一个整数还是之和在哪个维度级联相关。

4.总结

        numpy.r_的这三个整数默认值是'0,1,-1'

        numpy.c_就是numpy.r_在三个整数是'-1,2,0'时的特例,因为常用,所以单独拎出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值