如何将对象转换为数组?附目标array数组示例
Hey Lara! 我看你想要把某个对象转换成由多个NumPy数组组成的列表,刚好和你给出的示例结构一致。下面我给你几种实用的实现方法,根据你的原始对象类型来选就行:
方法1:直接构造目标数组列表(已知原始数据)
如果已经有每个数组对应的原始序列数据,直接用numpy.array()转换后放进列表就可以了,这是最直接的方式:
import numpy as np # 准备每个数组的原始数据 # 第一个数组:8个0 arr1 = [0.0 for _ in range(8)] # 第二个数组:58个元素,索引16和47位置为1,其余为0 arr2 = [0.0]*58 arr2[16] = 1.0 arr2[47] = 1.0 # 第三个数组:55个元素,索引53位置为1,其余为0 arr3 = [0.0]*55 arr3[53] = 1.0 # 第四个数组:指定的数值序列 arr4 = [1916.924, 0., 0., 0., 267.08, 11.156647, 264.044, 2629.504, 170.109, 3883.039, 2842.796] # 组合成目标结构 target_array_list = [ np.array(arr1), np.array(arr2), np.array(arr3), np.array(arr4) ] # 验证结果 print(target_array_list)
方法2:从自定义对象中提取数据转换
如果你的“指定对象”是自定义类的实例,包含对应的数据属性,只需要提取属性值再转成NumPy数组即可:
import numpy as np # 假设自定义对象结构 class CustomDataObject: def __init__(self): self.feature1 = [0.0]*8 self.feature2 = [0.0]*58 self.feature2[16] = 1.0 self.feature2[47] = 1.0 self.feature3 = [0.0]*55 self.feature3[53] = 1.0 self.feature4 = [1916.924, 0., 0., 0., 267.08, 11.156647, 264.044, 2629.504, 170.109, 3883.039, 2842.796] # 创建对象实例 my_obj = CustomDataObject() # 提取并转换 target_array_list = [ np.array(my_obj.feature1), np.array(my_obj.feature2), np.array(my_obj.feature3), np.array(my_obj.feature4) ]
方法3:从结构化数据(如JSON)转换
如果原始对象是JSON这类结构化数据,先解析成Python字典,再遍历转换:
import numpy as np import json # 示例JSON数据(实际可以从文件读取) json_data_str = ''' { "arr1": [0., 0., 0., 0., 0., 0., 0., 0.], "arr2": [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], "arr3": [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.], "arr4": [1916.924, 0., 0., 0., 267.08, 11.156647, 264.044, 2629.504, 170.109, 3883.039, 2842.796] } ''' # 解析JSON为字典 parsed_data = json.loads(json_data_str) # 按顺序转换为目标数组列表 target_array_list = [ np.array(parsed_data["arr1"]), np.array(parsed_data["arr2"]), np.array(parsed_data["arr3"]), np.array(parsed_data["arr4"]) ]
内容的提问来源于stack exchange,提问作者Lara
相关产品推荐
相关产品推荐

