0

我有一个来自 api 的数组响应,我得到了这个 poly:

poly = [(0,525),(961,525),(961,1003),(0,1003)]

我需要将每个项目乘以 0.35,它们是我的代码:

poly = ak.Array(poly) * (35/100)

我有一个<class 'awkward1.highlevel.Array'>对象,然后我将其更改为np array

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]]

有人可以帮助我吗?

4

2 回答 2

1

数组中的每个子poly数组都有 type numpy.void。直接将 转换numpy.void为 anumpy.array不起作用,即它没有给出您想要的数组的形状。

遍历每个numpy.void数组,将它们转换为元组,然后将它们转换为numpy.arrays,同时将 s 类型转换floatnp.int32s。

这有效,如上所述:

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包,所以这可能是一个黑客解决方案。但它有效。

于 2020-08-26T13:33:01.590 回答
0

我做了^^

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))

我发现这个解决方案正在与朋友交谈。

于 2020-08-26T13:21:39.020 回答