Python 转换列表列表中的元组列表(NP数组)
我有一个api的数组响应,我得到了这个多边形:Python 转换列表列表中的元组列表(NP数组),python,numpy,awkward-array,Python,Numpy,Awkward Array,我有一个api的数组响应,我得到了这个多边形: poly = [(0,525),(961,525),(961,1003),(0,1003)] 我需要将每个项目乘以0.35,我的代码是: poly = ak.Array(poly) * (35/100) 我得到了一个对象,然后我将其更改为np数组 poly = np.array(poly) 但这被转换成了错误的格式 [( 0. , 183.75) (336.35, 183.75) (336.35, 351.05) ( 0. , 351
poly = [(0,525),(961,525),(961,1003),(0,1003)]
我需要将每个项目乘以0.35,我的代码是:
poly = ak.Array(poly) * (35/100)
我得到了一个
对象,然后我将其更改为np数组
poly = np.array(poly)
但这被转换成了错误的格式
[( 0. , 183.75) (336.35, 183.75) (336.35, 351.05) ( 0. , 351.05)]
我需要我的结果数组为np.array int32
:
[[0, 184], [336, 184], [336, 351], [0, 351]]
有人能帮我吗?是的^^
import numpy as np
import awkward1 as ak
poly = [(0,525),(961,525),(961,1003),(0,1003)]
poly = ak.Array(poly) * (35/100)
print(poly)
print(type(poly))
poly = np.array(poly)
poly = [[int(i), int(j)] for i, j in poly]
print(poly)
print(type(poly))
我在与朋友交谈时发现了此解决方案。您的
poly
数组中的每个子数组都具有类型numpy.void
。直接将numpy.void
转换为numpy.array
不起作用,也就是说,它没有给出您想要的数组形状
迭代每个numpy.void
数组,将它们转换为元组,然后将它们转换为numpy.array
s,同时将float
s键入np.int32
s
如上文所述,这是可行的:
import numpy as np
import awkward1.highlevel as ak
poly = [(0,525),(961,525),(961,1003),(0,1003)]
poly = ak.Array(poly) * (35/100)
poly = np.array(poly)
# Initializing a list, as NumPy was throwing some error that I haven't resolved.
poly_list = list()
for i, tup in enumerate(poly.copy()):
# Converting to tuple and then to np.array to fix an error.
poly_list.append(np.array(tuple(tup)))
# Converting back to a NumPy array.
poly = np.array(poly_list)
print(poly)
# Rounding and converting elements to np.int32 type
poly = poly.astype(np.int32)
我不熟悉
awkward1
包,因此这可能是一个黑客解决方案。但是它可以工作。np.array(poly)
为我提供了预期的2D数组。为什么您需要ak?另外,您可以尝试:ak.Array(np.Array(poly)*.35)
因为我需要第一个结果成为函数works的awk对象是的,它是一个tutle数组,然后我需要更改其比例并转换为arrays@Jasar猎户座:这是个错误。现在可以了。