Python 转换列表列表中的元组列表(NP数组)

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

我有一个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.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猎户座:这是个错误。现在可以了。