Dream, not what is, but what can be.

Convert Python numpy and .Net arrays

Python code

from System.Runtime.InteropServices import Marshal
from System import Array, Double, IntPtr
import numpy as np

# Convert .Net array to Python array
def convNetarray2Nparray(arrayIn):
    arrayOut = np.empty(len(arrayIn))
    Marshal.Copy(arrayIn, 0, IntPtr.__overloads__[int](arrayOut.__array_interface__['data'][0]), len(arrayIn))
    return arrayOut

# Convert Python array to .Net array
def convNparray2Netarray(arrayIn):
    arrayOut = Array.CreateInstance(Double,len(arrayIn))
    Marshal.Copy(IntPtr.__overloads__[int](arrayIn.__array_interface__['data'][0]),arrayOut,0, len(arrayOut))
    return arrayOut

    #arrayOut = Array.CreateInstance(Single,len(arrayIn))
    #it = np.nditer(arrayIn,flags=['multi_index'])
    #while not it.finished:
    #    ix = it.multi_index
    #    if len(ix)==1:
    #        arrayOut[ix[0]] = arrayIn[ix[0]]
    #    else:
    #        arrayOut[ix] = arrayIn[ix]
    #    it.iternext()
    #return arrayOut

Posted on Thursday, October 13, 2016 9:49 AM



using (Py.GIL())
    dynamic imp = Py.Import("imp");
    dynamic rem = imp.load_source("CustomPyFile", string.Format("{0}/CustomPyFile.py", Directory.GetCurrentDirectory()));

    // named tuple
    dynamic argList = rem.NamedTupleVar;
    argList.Name1 = new PyInt(1000);
    dynamic myRem = rem.CustomClassName(argList);

    // array test
    dynamic np = Py.Import("numpy");
    List<float> floats = new List<float>();
    Random rand = new Random();

    for (int i = 0; i < 240000; i++)

    // get
    dynamic getValues = myRem.Method3();


Posted on Thursday, September 15, 2016 12:22 PM

Real Ear Measurement using NAudio and Python.Net

Integrated Python For .Net and NAudio (ASIO sound drivers) for a Real Ear Measurement (REM) system.

Posted on Friday, August 19, 2016 7:24 PM

NAudio to record / play ASIO sound drivers

Using NAudio for record and play ASIO sound drivers

Posted on Friday, August 19, 2016 7:22 PM

Integrating Python into .Net app using Python For .Net

Using Python For .Net to call Python methods from C#

Also to call the methods from a class I had to decorate the Python class method with @ClassMethod

Also, still need to find a way to pass an array into the method. So far have to pass a List and convert in the Python method :(

var lck = PythonEngine.AcquireLock();

PyObject pyportal = PythonEngine.ImportModule(@"SomePyFile"); // .py file
PyObject c = pyportal.GetAttr("ClassName"); // class name in .py file

PyList ls = new PyList(new PyObject[3] { new PyFloat(1.0), new PyFloat(1.0), new PyFloat(1.0) });
c.InvokeMethod("SomeMethod", ls).ToString(); // some method in ClassName

string fromPython = "";
for (int i = 0; i < 100; i++)
    fromPython = c.InvokeMethod("AnotherMethod").ToString();


IronPython does not implement some CPython packages like scipy.fftpack - get cannot import multiarray from numpy.core error

Posted on Friday, August 12, 2016 2:42 PM

Tour de Tonka 2016

Rode 100 mile route with Kelly Fitz and Adrian Lister. Very fast - rode with the pack the whole way.

Posted on Saturday, August 06, 2016 6:49 PM

CSV with data containing comma

using Microsoft.VisualBasic.FileIO; //Microsoft.VisualBasic.dll
using (var csvReader = new TextFieldParser(fileName))
    csvReader.SetDelimiters(new string[] { "," });
    csvReader.HasFieldsEnclosedInQuotes = true;

    while (!csvReader.EndOfData)
         string[] row = csvReader.ReadFields();

Posted on Friday, June 17, 2016 12:20 PM

Azure Internet of Things (IoT)

Putting together an IoT concept app using Azure IoTHub, Service Bus, Event Hubs, Streaming Analytics, and Power BI using my MSDN credits. Good stuff. Next I will hook it up to a mobile app for an end to end demo.

Posted on Friday, April 22, 2016 6:40 AM

Azure Event Hub

Putting a ; at the end of an Azure Event Hub connection string causes an Invalid Token Error. Wow, frustrating.

Posted on Friday, April 22, 2016 6:39 AM

Clear IP addresses

To clear out cached IP addresses.

System.Diagnostics.Process.Start("ipconfig", "/renew");

// or to hide command window

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName = "ipconfig";
p.StartInfo.Arguments = "/renew";

Posted on Friday, April 08, 2016 8:51 AM