2015-04-24 45 views
1

我有下面的代碼:智能處理與許多指標

p1 = np.array([[[[[[[[[[0.]*2]*2]*2]*2]*2]*2]*2]*2]*2]*2) 
s = [0]*10 
# 
# Do something with s 
# 
p1[s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9]] += 1 

有一個聰明的方法:

  1. 沒有所有這些括號創建P1和
  2. 用字符串或列表訪問p1的組件?

我心目中是這樣的:

p1[s] += 1 

或:

p1[*s] += 1 

例如,如果不是10個指數我想要什麼N個索引?

回答

7
np.array([[[[[[[[[[0.]*2]*2]*2]*2]*2]*2]*2]*2]*2]*2) 

更好寫成:

np.zeros((2,2,2,2,2,2,2,2,2,2)) 

還是因爲有十個2 S:

np.zeros((2,)*10) 
+0

非常感謝!你還了解第二個問題嗎? – geodude

+1

對於第二個問題,使用此解決方案或任何其他方法,只需使用'p1 [s]'。只要確保's'是正確的類型,例如這裏的一個元組。 – nickie

+0

太好了,謝謝。 – geodude