Use matplotlib directly, instead of seaborn:
diff = np.array([np.random.normal(loc=i, size=(100,)) for i in range(10)])
fig, ax = plt.subplots()
for i in range(0,len(diff)):
ax.violinplot(dataset=diff[i],positions=[i])

Or, more compact:
fig, ax = plt.subplots()
ax.violinplot(dataset=diff.T,positions=range(10))
If your numpy arrays are separate:
array1 = np.random.normal(loc=0, size=(100,))
array2 = np.random.normal(loc=1, size=(100,))
array3 = np.random.normal(loc=2, size=(100,))
array4 = np.random.normal(loc=3, size=(100,))
array5 = np.random.normal(loc=4, size=(100,))
fig, ax = plt.subplots()
for i,arr in enumerate([array1, array2, array3, array4, array5]):
ax.violinplot(dataset=arr,positions=[i])