gpt4 book ai didi

python - 分配给 numpy 结构化数组

转载 作者:行者123 更新时间:2023-11-28 17:38:03 25 4
gpt4 key购买 nike

我必须以某种方式将结构化数据转换为 numpy 结构化数组形式。我阅读了我能找到的有关该主题的少量(抱歉 SciPy!)草率文档,但仍然一无所获。

基本上我想做这样简单的事情:

import numpy as np

dt = [('contacts', '(2,4)f8'),
('modelname', 'S10')]

arr = np.zeros((2,), dtype=dt)

testdata = [[99, 2, 3, 4], [7, 8, 9, 10]]

arr[0]['contacts'] = np.array(testdata)
arr[0]['modelname'] = 'test'
print arr

然后我希望看到将结构化数组的“联系人”字段设置为所需的内容。

但是,输出是:

[([[99.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]], 'test')
([[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]], '')]

显然只分配了第一个数字。

最佳答案

您以错误的方式为数组编制索引。尝试:

 arr['contacts'][0] = np.array(testdata)

也就是说,对于 arr'contacts' 列,将索引在 0 的行设置为您的 testdata。当您编写 arr[0] 时,您会检索到一个“记录标量”。事实上,如果您检查一下,您会发现 arr[0] 的类型为 numpy.void

分配给它不会影响分配给整个记录的内存。相比之下,arr['contacts'] 创建 View 并分配给该数组 View 中的 arr['contacts'][0] 会修改原始内存。

我同意 NumPy 文档在这方面可以更清楚...

关于python - 分配给 numpy 结构化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431747/

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