簡體   English   中英

如何編輯矩陣中的每第三列

[英]How to edit every 3rd column in a matrix

第一次發帖。 真的是python的新手。

我目前有一個 16x96 的 LED 面板,帶有紫外線、綠色和藍色燈。 這個想法是讓整個面板(矩陣)以用戶輸入的特定強度以用戶選擇的特定顏色點亮。 我知道有一種更有效的方法來編寫帶有變量的代碼,但我需要一些幫助。 如何點亮第一列、第四列、第七列等直到整個 LED 面板都點亮到紫外線? 或者在綠色的情況下:第二列、第五列、第八列等? 基本上每次都比原版+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使用的選項不同,因為它可以在您的示例中注意到。

  1. 它允許以更靈活的方式操作多維數組。 例如,如果它像在panel[:,0::3]一樣放在逗號之后,則表示該二維數組的列的副本被采用。
  2. panel[:,0::3] = i是元素分配。

請注意, panel[:,0::3] = i不會將元素分配給數組的副本,它會選擇原始項目中的特定項目並替換它們。 這兩個概念在使用 Python list都不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM