Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does [:, :] mean on NumPy arrays

Sorry for the stupid question. I'm programming on PHP but found some nice code on Python and want to "recreate" it on PHP. But I'm quite frustrated about the line

self.h = -0.1     self.activity = numpy.zeros((512, 512)) + self.h self.activity[:, :] = self.h 

But I don't understand what does

[:, :] 

mean.

Besides I wasn't able to "Google It".

Full code

import math import numpy import pygame from scipy.misc import imsave from scipy.ndimage.filters import gaussian_filter   class AmariModel(object):      def __init__(self, size):         self.h = -0.1         self.k = 0.05         self.K = 0.125         self.m = 0.025         self.M = 0.065          self.stimulus = -self.h * numpy.random.random(size)         self.activity = numpy.zeros(size) + self.h         self.excitement = numpy.zeros(size)         self.inhibition = numpy.zeros(size)      def stimulate(self):         self.activity[:, :] = self.activity > 0          sigma = 1 / math.sqrt(2 * self.k)         gaussian_filter(self.activity, sigma, 0, self.excitement, "wrap")         self.excitement *= self.K * math.pi / self.k          sigma = 1 / math.sqrt(2 * self.m)         gaussian_filter(self.activity, sigma, 0, self.inhibition, "wrap")         self.inhibition *= self.M * math.pi / self.m          self.activity[:, :] = self.h         self.activity[:, :] += self.excitement         self.activity[:, :] -= self.inhibition         self.activity[:, :] += self.stimulus   class AmariMazeGenerator(object):      def __init__(self, size):         self.model = AmariModel(size)          pygame.init()         self.display = pygame.display.set_mode(size, 0)         pygame.display.set_caption("Amari Maze Generator")      def run(self):         pixels = pygame.surfarray.pixels3d(self.display)          index = 0         running = True         while running:             self.model.stimulate()              pixels[:, :, :] = (255 * (self.model.activity > 0))[:, :, None]             pygame.display.flip()              for event in pygame.event.get():                 if event.type == pygame.QUIT:                     running = False                 elif event.type == pygame.KEYDOWN:                     if event.key == pygame.K_ESCAPE:                         running = False                     elif event.key == pygame.K_s:                         imsave("{0:04d}.png".format(index), pixels[:, :, 0])                         index = index + 1                 elif event.type == pygame.MOUSEBUTTONDOWN:                     position = pygame.mouse.get_pos()                     self.model.activity[position] = 1          pygame.quit()   def main():     generator = AmariMazeGenerator((512, 512))     generator.run()   if __name__ == "__main__":     main() 
like image 535
user2432721 Avatar asked May 29 '13 13:05

user2432721


1 Answers

The [:, :] stands for everything from the beginning to the end just like for lists. The difference is that the first : stands for first and the second : for the second dimension.

a = numpy.zeros((3, 3))  In [132]: a Out[132]:  array([[ 0.,  0.,  0.],        [ 0.,  0.,  0.],        [ 0.,  0.,  0.]]) 

Assigning to second row:

In [133]: a[1, :] = 3  In [134]: a Out[134]:  array([[ 0.,  0.,  0.],        [ 3.,  3.,  3.],        [ 0.,  0.,  0.]]) 

Assigning to second column:

In [135]: a[:, 1] = 4  In [136]: a Out[136]:  array([[ 0.,  4.,  0.],        [ 3.,  4.,  3.],        [ 0.,  4.,  0.]]) 

Assigning to all:

In [137]: a[:] = 10  In [138]: a Out[138]:  array([[ 10.,  10.,  10.],        [ 10.,  10.,  10.],        [ 10.,  10.,  10.]]) 
like image 121
Mike Müller Avatar answered Sep 29 '22 15:09

Mike Müller