[英]In Pandas, how do I find every 3rd row for each key in one column and add a new column with the 3rd row's info?
[英]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
使用的選項不同,因為它可以在您的示例中注意到。
panel[:,0::3]
一樣放在逗號之后,則表示該二維數組的列的副本被采用。panel[:,0::3] = i
是元素分配。 請注意, panel[:,0::3] = i
不會將元素分配給數組的副本,它會選擇原始項目中的特定項目並替換它們。 這兩個概念在使用 Python list
都不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.