8

I have this code:

I restated the problem formulation somewhat. Not sure if etiquette is to post a new question. If so, my bad

import numpy as np
a = np.array([0,0])
b = np.array([1,0])
c = np.array([2,0])

my_array_list = [a,b,c]
for my_array in my_array_list:
    np.save('string_that is representative of my_array',my_array)

where 'string that is representative of my array' equals to 'a', 'b', 'c' or similar.

There is likely a better way to solve this, I can just not come up with one right now.

What is the best way to do this, fast and efficiently?

Alejandro Simkievich
  • 3,512
  • 4
  • 33
  • 49
  • 2
    No, because it might have more than one name (e.g., if you do `other_name = my_array`). – BrenBarn Jan 24 '16 at 20:07
  • 1
    Possible duplicate: https://stackoverflow.com/questions/18425225/getting-the-name-of-a-variable-as-a-string – Cong Ma Jan 24 '16 at 20:14

2 Answers2

14

I can suggest you that function:

import numpy as np

def namestr(obj, namespace):
    return [name for name in namespace if namespace[name] is obj]

my_numpy = np.zeros(2)
print(namestr(my_numpy, globals()))

With output:

['my_numpy']
George Petrov
  • 2,729
  • 1
  • 13
  • 20
  • 1
    thanks George, beautiful and simple solution. I actually changed the implementation to: return [name for name in namespace if namespace[name] is obj][0] and that is exactly what I needed – Alejandro Simkievich Jan 24 '16 at 20:29
0

How about you initialize it as a dictionary with key value pairs. this way you reference the key (string) or the value (ndarray)

import numpy as np
a = np.array([0,0])
b = np.array([1,0])
c = np.array([2,0])

my_array_list = {'a':a,'b':b,'c':c}
for key, value in my_array_list.items():
    np.save('{} is representative of {}'.format(key, value)