#run("cpython/wrapper") #arr=[, def to_array2(obj, type = None, primitive = True): """Convert Python list to Java array. Args: obj(list): Original data. type(str): array type 'b' = byte, 'h' = short, 'i' = int, 'l' = long, 'f' = float, 'd' = double, 'c' = char, 'z' = boolean, 's' = String, 'o' = Object Returns: Java array. """ if obj is None: return None if type is None: type = 'o' enforceArrayType=False else: enforceArrayType=True if type[0] == '[': type = type[1:] element_type = ScriptUtils.getPrimitiveType(type) if primitive else ScriptUtils.getType(type) def convert_1d_array(obj): try: return jarray.array(obj,type) except: if type == 'c': ret = java.lang.reflect.Array.newInstance(element_type,len(obj)) for i in range(len(obj)): ret[i] = chr(obj[i]) return ret if type == 'z': ret = java.lang.reflect.Array.newInstance(element_type,len(obj)) for i in range(len(obj)): ret[i]= True if obj[i] else False return ret if type == 'o': ret = java.lang.reflect.Array.newInstance(element_type,len(obj)) for i in range(len(obj)): ret[i]= obj[i] return ret if type == "s": return Convert.toStringArray(obj) if primitive: ret = Convert.toPrimitiveArray(obj, element_type) else: ret = java.lang.reflect.Array.newInstance(element_type,len(obj)) for i in range(len(obj)): ret[i] = Convert.toType(obj[i],element_type) return ret if isinstance(obj,PyArray): if enforceArrayType: if Arr.getComponentType(obj) != element_type: rank = Arr.getRank(obj) if (rank== 1): obj=convert_1d_array(obj) elif (rank>1): pars, aux = [element_type], obj for i in range(rank): pars.append(len(aux)) aux = aux[0] ret = java.lang.reflect.Array.newInstance(*pars) for i in range(len(obj)): ret[i]=to_array(obj[i], type) obj = ret elif is_list(obj): if type=='o': ret = java.lang.reflect.Array.newInstance(element_type, len(obj)) for i in range (len(obj)): if is_list(obj[i]) or isinstance(obj[i],PyArray): ret[i] = to_array(obj[i],type) else: ret[i] = obj[i] obj=ret elif len(obj)>0 and (is_list(obj[0]) or isinstance(obj[0],PyArray)): pars, aux = [element_type], obj while len(aux)>0 and (is_list(aux[0]) or isinstance(aux[0],PyArray)): pars.append(len(aux)) aux = aux[0] pars.append(0) ret = java.lang.reflect.Array.newInstance(*pars) for i in range(len(obj)): ret[i]=to_array(obj[i], type) obj=ret else: obj= convert_1d_array(obj) return obj data = [] data.append(to_array([[0,1,2,3,4,5,4,3,2,1], [10,11,12,13,14,15,14,13,12,11], [20,21,22,23,24,25,24,23,22,21]], 'd')) data.append(to_array([[100,101,102,103,104,105,104,103,102,101], [110,111,112,113,114,115,114,113,112,111], [120,121,122,123,124,125,124,123,122,121]], 'd')) dims = [len(data), len(data[0]), len(data[0][0])] #data = [[[b for b in c] for c in d] for d in data] data = to_array(data, 'd') #data = to_array(data, 'i') dims = [len(data), len(data[0]), len(data[0][0])] print dims data = Convert.flatten(data) print data """ import java.util.ArrayList as ArrayList data=ArrayList() data.add(1.1) data.add(1.2) data.toArray() r=to_array(data, 'i') print r """