Neural Network not learning when more than 1 training data is given
The input has the following shape:

X = random.uniform(-5,5)
neunetwork.forward([[X]])

print(np.array([[X]]).shape) # == (1,1)


You could use numpy to generate X and y:

X = random.uniform(-5,5,size=(10,1)
Y = X**2


It would help to get a copy of the error message to make sure this is the problem.

The forward/backprop looks right in terms of accumulating gradients. I'm not sure about the following piece of code though:

dX = np.zeros((1,self.n_inputs))
for j in range(self.n_neurons):
        dX += 2*(target[0][j]-output[0][j])*self.weights.T[j]
self.targetprevX = self.prevX + dX*Lrate/self.n_neurons


I think you can utilize a dot product here.