Numpy:基于数组形状的索引数组?

时间:2013-08-07 18:49:36

标签: python numpy

说我有一个简单的数组:

a = np.zeros([3,3])
>>> [ 0 0 0 , 0 0 0 , 0 0 0 ]

是否有一个实用程序函数可以为我提供一个具有相同维度的数组,其中包含a上每个点的“坐标”?所以,

ia = np.indexer(a)
>>> [ (0,0) (0,1) (0,2), (1,0) (1,1) (1,2), (2,0) (2,1) (2,2) ]

?我基本上想要对我正在使用np.ndenumerate的操作进行矢量化,但是如果ndenumerate的输出是矩阵形式的话会更容易。

class GLWidget(QtOpenGL.QGLWidget):
  target_array = None

  ...

  def paintGL(self):
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    self.render()

  def render(self):
    if self.target_array is None:
      return

    starting_abs_point = -(np.array(self.target_array.shape)-1)/(2*np.max(self.target_array.shape))
    glTranslate(*starting_abs_point)
    last_rel_coords= np.zeros(3)

    for idx, value in np.ndenumerate(self.target_array): # vectorization target!
      rel_coords = np.array(idx)/np.max(self.target_array.shape)
      step = rel_coords-last_rel_coords
      last_rel_coords = rel_coords

      glTranslate(*step)
      glutWireCube(value/( np.max(self.target_array)*np.max(self.target_array.shape) ))

    glTranslate(*-(starting_abs_point+last_rel_coords))

目标(目前看起来很糟糕,因为我无法获得照明和进展,但这是一项学习练习): enter image description here

0 个答案:

没有答案