gpt4 book ai didi

arrays - IDL - 数组结构到结构数组

转载 作者:行者123 更新时间:2023-12-02 00:59:52 26 4
gpt4 key购买 nike

我从一个 FITS 表中读取数据,并获得一个包含该表的结构,其中每个标签代表一列。

有没有办法将数组结构重新格式化为结构数组?那么 Array 中的一个 Struct 代表一行?


@mgalloy 提出的一般解决方案(见下文):

function SoA2AoS, table

if (table eq !NULL) then return, !NULL

tnames = tag_names(table)
new_table = create_struct(tnames[0], (table.(0)[0]))
for t = 1L, n_tags(table) - 1L do begin
new_table = create_struct(new_table, tnames[t], (table.(t))[0])
endfor

new_table = replicate(new_table, n_elements(table.(0)))

for t = 0L, n_tags(table) - 1L do begin
new_table.(t) = table.(t)
endfor

return, new_table

end

最佳答案

是的,所以你有这样的东西?

IDL> table = { a: findgen(10), b: 2. * findgen(10) }

创建一个新表,定义单行的外观并将其复制适当的次数:

IDL> new_table = replicate({a: 0.0, b: 0.0}, 10)

然后将列复制过来:

IDL> new_table.a = table.a
IDL> new_table.b = table.b

您的新表可以按行或列访问:

IDL> print, new_table[5]
{ 5.00000 10.0000}
IDL> print, new_table.a
0.00000 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000
7.00000 8.00000 9.00000

关于arrays - IDL - 数组结构到结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com