If the array is small and readability is more important than efficiency I suggest:
nums = [4., 9., 13., 25]
N = 10
while len(nums) < N:
pos = np.argmax(np.diff(nums)) # where maximum difference is
nums.insert(pos+1, (nums[pos+1] + nums[pos]) / 2.) #introduce value
Of couse, this suffers from the problems already mentioned that probably this is not the most efficient way of interpolating with the minimum differences between the points at the end of the run.