0

I am new to python and many constructions blows away my C styled brain. Now I need to understand how some python code works.

#Training inputs for RGBcolors
colors = np.array(
     [[0.0, 0.0, 0.0],
      [0.0, 0.0, 1.0],
      [0.0, 0.0, 0.5],
      [0.125, 0.529, 1.0],
      [0.33, 0.4, 0.67],
      [0.6, 0.5, 1.0],
      [0.0, 1.0, 0.0],
      [1.0, 0.0, 0.0],
      [0.0, 1.0, 1.0],
      [1.0, 0.0, 1.0],
      [1.0, 1.0, 0.0],
      [1.0, 1.0, 1.0],
      [0.33, 0.33, 0.33],
      [0.5, 0.5, 0.5],
      [0.66, 0.66, 0.66]])

for i in range(num_training):
    rnd_ind = np.random.randint(0, len(colors))
    s.train(colors[rnd_ind, :]) //what's going on here?

This is the train body:

def train(self, input_x):
    # Compute the winning unit
    bmu_index, diff = self.session.run([self.bmu_index, self.diff], {self.input_placeholder:[input_x], self.current_iteration:self.num_iterations})

    # Update the network's weights
    self.session.run(self.update_weights, {self.diff_2:diff, self.dist_sliced:self.dist[bmu_index[0],:], self.current_iteration:self.num_iterations})

    self.num_iterations = min(self.num_iterations+1, self.num_expected_iterations)

I set breakpoint to train beginning to see how it's input parameter looks like, but I no see anything unusual. This is just an array.

I tried searching and found this Colon (:) in Python list index question, but it looks like this is something different, because in my case : written after ,, but in their cases it follows after some value.

Community
  • 1
  • 1
Kosmo零
  • 4,001
  • 9
  • 45
  • 88

2 Answers2

1

The , inside the [] indexing is part of NumPy's indexing for multi-dimensional arrays.

Florian Brucker
  • 9,621
  • 3
  • 48
  • 81
1

This has nothing to do with standard python arrays. If you use it in python lists you ll get an error.

Traceback (most recent call last):
  File "asd.py", line 3, in <module>
    print(x[0, :])
TypeError: list indices must be integers or slices, not tuple

This is specific to numpy. It is an indexing of a multidimensional array. First number is the first dimension, second is the second and so on.

import numpy as np

x = np.array([[1,2,3], [3,4,5], [2,3,4], [4,7,8]])

print(x[0, 1:2])

Will output [2]

Gábor Erdős
  • 3,599
  • 4
  • 24
  • 56