Как определить, была ли добавлена ​​уникальная запись в массив, и добавить к нему ввод на основе этой уникальной записи? - PullRequest
2 голосов
/ 18 июня 2020

Я создаю программу с пользовательским интерфейсом, которая отслеживает мой ежедневный прогресс, пока я учусь играть на бас-гитаре.

В этой программе я создаю массивы для всей информации, которую я отслеживаю, в дополнение к массиву, который отслеживает частоту того, насколько я практикую конкретную полосу. Это часть программы:

import numpy as np

count = 1

complete_arr=[]
artists_arr=[]

while count <= 3:

    # Inputs
    time_in = input("Daily Time: ")
    pa_in = input("Playing Ability: ")
    enj_in = input("Enjoyment: ")
    a1_in = str(input("Artist 1: "))
    a2_in = str(input("Artist 2: "))
    a3_in = str(input("Artist 3: "))
    notes_in = str(input("Notes: "))

    # Append to Artist matrix
    artists_arr.append([a1_in, a2_in, a3_in])

    # Append to complete matrix
    complete_arr.append([count, time_in, pa_in, enj_in, a1_in, a2_in, a3_in, notes_in])

    count += 1


# Transform into numpy arrays
complete_arr_np = np.asarray(complete_arr)
# print(complete_arr_np)
artists_arr_np = np.asarray(artists_arr)
print(artists_arr_np)

# Counts the number of times a unique artist appears
(unique, counts) = np.unique(artists_arr_np, return_counts=True)
band_count = np.asarray((unique, counts)).T
print(band_count)

Допустим, в течение этого периода выборки я практикую полосу A 3 раза, полосу B 1 раз и полосу C 1 раз. Остается 4 пустых записи. Какой запуск это дает мне:

print(artists_arr_np)
[['A', 'B', ''], ['A', 'C', ''], ['A', '', '']]

print(band_count)
[['' '4']
 ['A' '3']
 ['B' '1']
 ['C' '1']]

Все работает, как ожидалось, но вот проблема. Мне нужен способ обнаружить, как только была обнаружена уникальная группа, а затем добавить ее с указанием жанра этой группы. Таким образом, после запуска этого кода обнаруживаются 3 новых диапазона (технически 4, включая пустую запись): A, B, C. В идеале после запуска кода я хочу, чтобы меня попросили ввести жанры каждой уникальной группы. В результате получается следующее:

[['' '4' '']
 ['A' '3' 'Rock']
 ['B' '1' 'R&B']
 ['C' '1' 'R&B']]

Как мне go это сделать? Я предполагаю, что это будет включать комбинацию циклов if и for, но не знаю, как именно. Если это не очевидно, я новичок в python, поэтому ответ может быть проще, чем я думаю. Частота не имеет значения, но я считаю, что здесь должна храниться информация о жанре.

...