and it does work (dimension-wise) but doesn't get the correct values. The only value the neuron vector stores is 0 but I noticed when the sign changes in python so does in neuron vector. So I have a vector full of -0 and 0.

This makes me think that there must be an error in the bits the number is represented, each value in the python array is a 'numpy.float64'.

Is there an issue in transferring 64 bit numbers using the from_python() function?

this is the code that seems to not work...
t is an array in python which converts just fine to a neuron vector.

the external_voltage[:,i] gives back 1D array (same length as t) but the stim_vec remains at zero with alternating sign (negative-positive) when the external_voltage changes value. I cant really see why it should do this.

Since there is only one instance of stim_vec, I would have expected every segment to get the same last external_voltage 1d array.
Perhaps you need an array of stim_vec as in
stim_vec = []
...........
stim_vec.append(Vector(external_voltage[:,i])
stim_vec[-1].play(seg....)
However, I would not have expected that last external voltage to be alternating +-0 so perhaps there is a bug in the
transfer of the numpy 1-d array to a Vector. Your fragment does not exhibit the creation of the 2-d numpy array. A complete
fragment would help me see the problem and work on a diagnosis. The following test

by not putting the stim_vec instance in the test_vec, then when
stim_vec = h.Vector()
is executed, the reference count of the Vector previously referenced by stim_vec goes to 0
and that deletes that Vector.