使用许多索引智能处理Python数组

geo*_*ude 1 python arrays numpy multidimensional-array

我有以下代码:

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
Run Code Online (Sandbox Code Playgroud)

有更聪明的方式:

  1. 创建没有所有括号的p1,和
  2. 使用字符串或列表访问p1的组件?

我想到的是:

p1[s] += 1
Run Code Online (Sandbox Code Playgroud)

要么:

p1[*s] += 1
Run Code Online (Sandbox Code Playgroud)

例如,如果我想要N个指数而不是10个指数呢?

Dan*_* D. 7

np.array([[[[[[[[[[0.]*2]*2]*2]*2]*2]*2]*2]*2]*2]*2)
Run Code Online (Sandbox Code Playgroud)

写得更好:

np.zeros((2,2,2,2,2,2,2,2,2,2))
Run Code Online (Sandbox Code Playgroud)

或者因为有十个2s:

np.zeros((2,)*10)
Run Code Online (Sandbox Code Playgroud)