numpy.r_(numpy.c_)的用法

#要用到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'时的特例,因为常用,所以单独拎出来了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码有以下几个问题需要修改: 1. `show_data2` 在代码中未定义,应该使用 `marry_data["2019年"]`,即将 `show_data2` 修改为 `marry_data["2019年"]`。 2. `set_series_opts` 和 `set_global_opts` 方法之间缺少一个右括号,应该在 `position="right"` 后面添加一个右括号。 3. `Bar` 类需要从 `pyecharts.charts` 模块导入,可以在代码开头添加 `from pyecharts.charts import Bar`。 修改后的代码如下所示: ``` import pandas as pd import numpy as np from pyecharts.charts import Bar import pyecharts.options as opts path_marry = r"D:\迅雷下载\新建文件夹\数据集\数据可视化数据集\结婚离婚\结婚数据.csv" path_divorse = r"D:\迅雷下载\新建文件夹\数据集\数据可视化数据集\结婚离婚\离婚数据.csv" marry_data = pd.read_csv(path_marry) divorse_data = pd.read_csv(path_divorse) divorse_data = divorse_data.set_index(divorse_data["地区"]).drop(columns=["地区"]) show_data2 = marry_data["2019年"] show_data3 = divorse_data["2019年"] x_axis_data = show_data3.index.tolist() y_axis_data1 = show_data2.values.tolist() y_axis_data2 = show_data3.values.tolist() c = ( Bar(init_opts=opts.InitOpts(width="800px", height="700px")) .add_xaxis(x_axis_data) .add_yaxis("2019年结婚登记数量(万对)", y_axis_data1) .add_yaxis("2019年离婚登记数量(万对)", y_axis_data2) .reversal_axis() .set_series_opts(label_opts=opts.LabelOpts(position="right")) .set_global_opts( title_opts=opts.TitleOpts(title="全国各省2019年结婚登记数量(万对)") ) ) c.render_notebook() ``` 修改后的代码已经可以在 Jupyter Notebook 中正常运行,并且可以生成可视化图表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值