Bad Input Shape -- How to interpret and Diagnose; Also side ML question
According to doc GaussianNB can handle multiple classes, but its fit function still accepts a one dimensional array. This array is allowed to contain multiple classes like: [0, 1, 2, 3,...]
When I changed your train labels as below fit function worked:
train_labels = np.random.randint(0, 9, 25000)

So you can create an array for labels. If each sample only belongs to one class then you can label this sample with corresponding class, but if there are some samples that have multiple classes at the same time then you should use one of them, or create groups that consist of these classes, and label sample if it belongs to this group or not.