You can call this method by providing a list (or tuple) of floats as a second parameter.
MyClass.ExternalFunction(myName, [0.0]);
There will be a conversion between 2 different data structures in 2 virtual machines. Python.Net will convert python's list of floats to an array of doubles in .Net environment and pass it by reference to your function. Changes made to second parameter will not be propagated back to python.
By using reflection you can get more control over parameters marshaling.
import clr
clr.AddReference("MyDll")
import System
import MyLib
myClassType = System.Type.GetType("MyLib.MyClass, MyDll")
method = myClassType.GetMethod("ExternalFunction")
numbersArray = System.Array[System.Double]([1.0, 2.0, 3.0])
parameters = System.Array[System.Object](["Benjamin",numbersArray])
method.Invoke(None,parameters)
numbersArray = parameters[1] # an updated Arg2 can be retrieved from parameters array