Update
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
|
||||
#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
|
||||
"""
|
||||
Reference in New Issue
Block a user