хранение массивов в списке - PullRequest
0 голосов
/ 11 июня 2019

Я хотел бы автоматизировать процесс загрузки некоторых файлов данных ASCII в виде кучи для их построения. Имена файлов передаются программе через терминал, а содержимое загружается и сохраняется в списке. Таким образом, в основном идея состоит в том, чтобы иметь список, который содержит пустые массивы, которые я могу вызвать позже с помощью индексации для построения графиков для каждой отдельной информации. У меня проблема в том, что с этими списками не работает индексация

    subplots_array = [[0,0],[0,0],[0,0],[0,0]]
    subplots_axes = [0,0,0,0] #this array will allow to create subplots for ''' 
                              # each of the above data
    fig = plt.figure()
    counter = 0
    for x in arguments_list:
        for filename in glob.glob(x):  
            mydata = np.loadtxt(filename)
            subplots_array[counter] = mydata # This loads the data from files 
            #specified in arguments argv into a subplot array as numpy sub-array
            counter += 1

    counter = 0    

    for x in subplots_array: 
         subplots_axes[counter] = fig.add_subplot(counter+1, 1, 1) 
         subplots_axes[counter].scatter(subplots_array[counter][:, 0]), subplots_array[counter][:, 1], s = 12, marker = "x")
         counter = counter + 1

Это ошибка, которую я получаю. Самое смешное, что если я заменю «counter» числовым индексом, таким как 0 или 1 или 2 и т. Д., Данные будут отображены правильно, несмотря на то, что counter также определен как индекс. Так что у меня нет идей.

Traceback (most recent call last):
  File "FirstTrial.py", line 89, in <module>
    subplots_axes[counter].scatter(subplots_array[counter][:,0], subplots_array[counter][:, 1], s = 12, marker = "x")
TypeError: list indices must be integers or slices, not tuple

Надеюсь, этого описания достаточно, чтобы помочь мне решить проблему.

1 Ответ

0 голосов
/ 11 июня 2019

Ваш отступ отключен, и без ваших файлов я не могу воспроизвести ваш код.Но вот что, я думаю, происходит:

In [1]: subplots_array = [[0,0],[0,0],[0,0],[0,0]]                                                     
In [2]: subplots_array[0]=np.ones((2,3))   # one or more counter loops

индексирование с помощью counter==0 работает:

In [4]: subplots_array[0][:,0]                                                                         
Out[4]: array([1., 1.])

, но ваша ошибка со следующим значением счетчика:

In [5]: subplots_array[1][:,0]                                                                         
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-0b654866bdee> in <module>
----> 1 subplots_array[1][:,0]

TypeError: list indices must be integers or slices, not tuple

Здесь я заменил один элемент subplot_array на 2d массив, но оставил остальные в покое.Они были инициализированы как списки:

In [6]: subplots_array                                                                                 
Out[6]: 
[array([[1., 1., 1.],
        [1., 1., 1.]]), [0, 0], [0, 0], [0, 0]]

Так что проблема не в самом типе counter, а в следующем уровне индексации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...