说我有一个简单的数组:
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))
目标(目前看起来很糟糕,因为我还无法获得照明和其他东西,但这是一个学习练习):