Hard to follow with all that toolbox stuff. In short, maybe your arcpy.da.ExtendTable(in_features,"OBJECTID" ,nparray3,"OID@") just isn't cutting it with your dtype and/or environment.
When I am working with numpy arrays and wish to concatenate or join arrays or columns together, use recfunctions which is housed in the numpy.lib folder. Its initial use was for matplotlib and it is functionality has never made it mainstream numpy since the functions are in essence shells for basic numpy array operations with the ugliness of reshaping and reformulating arrays hidden from the gentle user. Arcpy has some of this functionality in the arcpy.da section like Extend Table as well as the conversion to-from arc* to numpy
Simple arrays of the same dtype are easy to put together.
>>> # plain arrays of the same data type
>>> a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]],dtype='float64')
>>> b = np.array([[0, 1],[2, 3]],'float64')
>>>
>>> # concatenate the columns, at least 2 methods
>>> np.c_[a, b]
array([[ 0., 1., 2., 3., 4., 0., 1.],
[ 5., 6., 7., 8., 9., 2., 3.]])
>>> np.concatenate((a, b),axis = 1)
array([[ 0., 1., 2., 3., 4., 0., 1.],
[ 5., 6., 7., 8., 9., 2., 3.]])
However, as you will agree, when you have mixed dtypes, things need to be addressed a tad more carefully.
So via example, I will let you explore the options.
Assume I have two arrays that I want to put together to form one...say this is a 'join' in arc* terminology.
Procedure:
- import recfunctions (rfn for short)
- take your 2 arrays which can be of different dtypes as shown
- use the merge_arrays function in rfn
- examine your resultant
>>> import numpy as np
>>> import numpy.lib.recfunctions as rfn
>>> a = np.array([(1, 2, 3.0),(4, 5, 6.0)], dtype=[('X','int32'), ('Y','int32'),('Z','float64')])
>>> b = np.array([('a','b'),('c','d')], dtype=[('Var_1','|S10'),('Var_2','|S5')])
>>> c = rfn.merge_arrays((a, b), asrecarray=True, flatten=True)
>>>
>>> a # input array 1
array([(1, 2, 3.0), (4, 5, 6.0)],
dtype=[('X', '<i4'), ('Y', '<i4'), ('Z', '<f8')])
>>> b # input array 2
array([('a', 'b'), ('c', 'd')],
dtype=[('Var_1', 'S10'), ('Var_2', 'S5')])
>>> c # joined at last...
rec.array([(1, 2, 3.0, 'a', 'b'), (4, 5, 6.0, 'c', 'd')],
dtype=[('X', '<i4'), ('Y', '<i4'), ('Z', '<f8'), ('Var_1', 'S10'), ('Var_2', 'S5')])
recfunctions also has a bunch of other tools that you will find interesting.
>>> dir(rfn)
['MaskedArray', 'MaskedRecords', ... snip ..., 'append_fields', 'drop_fields', 'find_duplicates', 'flatten_descr', 'get_fieldstructure', 'get_names', 'get_names_flat', 'itertools', 'izip_records', 'join_by', 'ma', 'merge_arrays', 'ndarray', 'np', 'rec_append_fields', 'rec_drop_fields', 'rec_join', 'recarray', 'recursive_fill_fields', 'rename_fields', 'stack_arrays', 'sys', 'zip_descr']
Hope this helps .... otherwise, for general info.