将输出数组流转换为json格式,该格式作为另一个模块的输入

问题描述 投票:0回答:2

根据我的任务,我需要输出数组,它返回一个17x2矩阵。样本输出如下所示,

[[[112.7389984  435.22939381]
  [105.58624109 442.22496105]
  [105.40821313 428.48843217]
  [111.54160163 455.5956664 ]
  [111.73701629 422.6852232 ]
  [157.57940773 468.98824122]
  [152.69650377 418.14950772]
  [216.09577598 494.46142991]
  [216.24983383 398.55651579]
  [187.72555422 470.64766974]
  [195.02623991 401.41814955]
  [250.42257518 456.73815289]
  [254.02587076 414.79482611]
  [342.11166065 465.78956559]
  [337.49021309 398.70648202]
  [420.26860336 483.16769808]
  [413.13895387 400.20868124]]

必须更新此输出并重新排列为json格式,该格式充当另一个模块的输入。示例json文件如下所示

"people": [{"pose_keypoints_2d": [373.66941223936897, 154.11017137748198, 376.56976806799094, 148.62508032371454, 380.12147964285106, 146.7658045737609, 408.1720184452102, 150.81495177498203, 395.4577760498318, 148.65305484579298, 429.2950931571711, 187.23194235510218, 427.43709937755006, 183.81666234409775, 438.86293520488795, 242.28969041954517, 406.0761933264817, 239.55742403024738, 391.300993933522, 275.09581687542385, 366.366300313692, 273.31374397263687, 437.8343750984803, 266.7701811748018, 413.9231729479147, 269.37950168236074, 427.40363975660733, 334.6826900855724, 391.21232291711186, 334.43577344764236, 471.9465081925208, 373.23237206886364, 393.9988229904401, 372.1616302399678, 0.0, 0.0]}]}

基本上结构应该是顺序

"people": [{"pose_keypoints_2d": [x0,y0,x1,y1, x35,y35 ]}]}

对于数组我可以创建类似的东西

dc = {"people":[]}
    flat = [0.0 for i in range(36)] 

这基本上是一维矢量。我试图连续填充向量(x0,y0,x1,y1 ......)。我认为在matlab中有一个内置命令来做到这一点。我正在调查命令enumerate,但我不确定这是否是解决它的方法?

python arrays python-3.x list data-structures
2个回答
0
投票

这里有一些游乐场:运行,更新并看看你能做什么:

import numpy as np
import json
#Creating 17x2 matrix
my_matrix = np.random.rand(17,2)
print(my_matrix)
print(my_matrix.shape)
print("------------------------------")
#Creating output format (Creating dictionary)
my_dict = {}
new_dict = {}
my_dict["pose_keypoints_2d"] = my_matrix
new_dict['people'] = my_dict
print(new_dict)
print("------------------------------")
# Creating json
json_data = json.dumps(new_dict['people']["pose_keypoints_2d"].tolist())
print(type(json_data))
print(json_data)
print("------------------------------")

#Now reverse, json to numpy array matrix
data = json.loads(json_data)
numpy_matrix = np.reshape(data,(17,2))
print(numpy_matrix)

0
投票

这应该可以解决问题。相应地定义你的dict,然后通过列表理解迭代你的矩阵

dct  = {'people':[{"pose_keypoints_2d": []}]}
dct['people'][0]["pose_keypoints_2d"] = [val[0] for val in matrix[0]]
print(dct)
#{'people': [{'pose_keypoints_2d': [112.7389984, 105.58624109,  
#   105.40821313, #111.54160163, 111.73701629, 157.57940773,  
#152.69650377,   216.09577598, #216.24983383, 187.72555422, 195.02623991,  
#250.42257518,  254.02587076, #342.11166065, 337.49021309, 420.26860336,  
 #413.13895387]}]}
© www.soinside.com 2019 - 2024. All rights reserved.