scatter_()函数的详细介绍

一、函数介绍

scatter_(input, dim, index, src):将src中数据根据index中的索引按照dim的方向填进input。可以理解成放置元素或者修改元素

dim:沿着哪个维度进行索引
index:用来 scatter 的元素索引
src:用来 scatter 的源元素,可以是一个标量或一个张量

二、实现原理

x = torch.rand(2, 5)
 
#tensor([[0.1940, 0.3340, 0.8184, 0.4269, 0.5945],
#        [0.2078, 0.5978, 0.0074, 0.0943, 0.0266]])
 
torch.zeros(3, 5).scatter_(0, torch.LongTensor([[0, 1, 2, 0, 0], [2, 0, 0, 1, 2]]), x)
 

LongTensor的shape刚好与x的shape对应,也就是LongTensor每个index指定x中一个数据的填充位置。dim=0,表示按行填充,主要理解按行填充。eg. LongTensor中的第1行第0列的值为2,即索引index=2,表示在第2行(从0开始)进行填充,对应到zeros(3, 5)中就是位置(2,0)。所以此处要求zeros(3, 5)的列数要与x列数相同,LongTensor中的index最大值应与zeros(3, 5)行数相一致,示意图如下

在这里插入图片描述

最终可以得到填充完整的zeros

tensor([[0.1940, 0.5978, 0.0074, 0.4269, 0.5945],
        [0.0000, 0.3340, 0.0000, 0.0943, 0.0000],
        [0.2078, 0.0000, 0.8184, 0.0000, 0.0266]])
Python中的scatter函数是matplotlib库中的一个函数,用于绘制散点图。该函数的原型为scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs) [2。该函数有多个参数,包括: - x、y:输入点的数组,表示散点图的横坐标和纵坐标。 - s:点的大小,可以是一个数组,表示点的直径,默认为20。 - c:点的颜色,可以是一个字符串,表示单一颜色,也可以是一个二维行数组,表示多个点的颜色,默认为蓝色。 - marker:点的形状,默认为小圆圈。 - cmap:调色板,用于设置点的颜色映射。 - 其他参数包括alpha、linewidths、edgecolors等,用于设置点的透明度、边线宽度、边线颜色等属性 [2。 下面是一个使用scatter函数的示例代码: ``` import numpy as np import matplotlib.pyplot as plt # 生成测试数据 x = np.arange(1, 10) y = x # 创建图形对象 fig = plt.figure() ax = fig.add_subplot(111) # 设置标题和坐标轴标签 ax.set_title('Scatter Plot') plt.xlabel('X') plt.ylabel('Y') # 绘制散点图 c_value = ['r', 'y', 'g', 'b', 'r', 'y', 'g', 'b', 'r'] ax.scatter(x, y, c=c_value, marker='s') # 显示图形 plt.show() ``` 在这个示例中,我们导入了`numpy`和`matplotlib.pyplot`模块,并生成了测试数据x和y。然后,我们创建了一个图形对象和一个子图对象。设置了标题和坐标轴标签后,使用scatter函数绘制了散点图,其中c参数指定了每个点的颜色,marker参数指定了点的形状。最后,通过`plt.show()`显示所绘制的图形 [3。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【Python知识】可视化函数plt.scatter](https://blog.csdn.net/gongdiwudu/article/details/129947219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [四、Python中scatter函数参数详解](https://blog.csdn.net/weixin_39541558/article/details/79972300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值