python - 如何编辑矩阵中的每第三列
问题描述
第一次发帖。对python真的很陌生。
我目前有一个 16x96 的 LED 面板,带有紫外线、绿色和蓝光。这个想法是使整个面板(矩阵)以用户输入的特定强度以用户选择的特定颜色点亮。我知道有一种更有效的方法可以用变量编写代码,但我需要一点帮助。怎样才能点亮第一列、第四列、第七列等等,直到整个LED面板都点亮到UV?或者在绿色的情况下:第二列、第五列、第八列等?基本上每次都比原版+3。我写的代码如下:
panel = np.zeros((16,96))
#function that encompasses object color when selected
def click1():
global a
global i
i = lightintensityentry.get()
a = var1.get() #variable associated with selection
if a == 1:
panel[:,0::3] = i
print(panel)
print("Object is a UV light!")
elif a == 2:
panel[:,1::4]= i
print(panel)
print("Object is a green light!")
elif a == 3:
panel[:,2::3]= i
print(panel)
print("Object is a blue light!")
elif a == 4:
print(panel) #would be all zeros, therefore no light
print("Object produces no light!")
我认为与此类似的事情会有所帮助:编辑数组中的所有其他项目 它没有产生我期望的结果。任何帮助,将不胜感激。
寻找对它的作用的解释:panel[:,0::3] 0::3 究竟做了什么?
谢谢!
解决方案
0::3
是标准的 Python切片符号。它相当于一个索引序列,从 0 开始,按 step = 3 递增。
numpy
切片选项不同于 Python 中使用的选项,因为list
它可以在您的示例中注意到。
- 它允许以更灵活的方式操作多维数组。例如,如果它像 in 一样放在逗号之后
panel[:,0::3]
,则表示获取此二维数组的列的副本。 panel[:,0::3] = i
是按元素分配的。
请注意,panel[:,0::3] = i
不会将元素分配给数组的副本,它会选择原始项目中的特定项目并替换它们。这两个概念都不适用于 Python list
。
推荐阅读
- python - 我的代码在 python shell 中运行良好,但在我的 Visual Studio 代码上运行时没有显示任何内容
- php - Laravel DD api 不显示完整数组
- javascript - 二进制搜索中开始结束索引的混淆
- twilio - 使用 API 或 HTTP POST 编辑 Twilio TwiML
- c++ - 如何在 OMNeT++ 中使用 NetworKit 作为库?
- java - Cplex 获取目标函数的系数
- laravel - Laravel 查询错误 - htmlspecialchars() 期望参数 1 是字符串,给定对象
- mysql - 梳理搜索结果以使用 UNION 还是有其他方法
- php - 有没有办法重写 WordPress 管理员的 URL 以使用重写 API 向用户隐藏它/添加重写规则而不使用 mod_rewrite
- python - 如何反序列化 base64 编码的数据并将其与 DRF 一起使用