1

说我有一个简单的数组:

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))

目标(目前看起来很糟糕,因为我还无法获得照明和其他东西,但这是一个学习练习): 在此处输入图像描述

4

0 回答 0