gpt4 book ai didi

python - 无法减去结构化 numpy 数组中的特定字段

转载 作者:行者123 更新时间:2023-11-28 18:29:21 25 4
gpt4 key购买 nike

在尝试减去结构化 numpy 数组中的字段时,发生以下错误:

In [8]: print serPos['pos'] - hisPos['pos']
---------------------------------------------------------------------------
TypeError
Traceback (most recent call last) <ipython-input-8-8a22559cfb2d> in <module>()
----> 1 print serPos['pos'] - hisPos['pos']

TypeError: ufunc 'subtract' did not contain a loop with signature matching types
dtype([('x', '<f8'), ('y', '<f8'), ('z', '<f8')])
dtype([('x', '<f8'), ('y', '<f8'), ('z', '<f8')])
dtype([('x', '<f8'), ('y', '<f8'), ('z', '<f8')])

鉴于标准的 float 数据类型,为什么我无法执行此减法?

为重现这些情况,提供了以下示例代码:

import numpy as np

raw = np.dtype([('residue', int),
('pos', [('x', float),
('y', float),
('z', float)])])

serPos = np.empty([0,2],dtype=raw)
hisPos = np.empty([0,2],dtype=raw)

serPos = np.append(serPos, np.array([(1,(1,2,3))], dtype=raw))
hisPos = np.append(hisPos, np.array([(1,(1,2,3))], dtype=raw))

print serPos['pos'], hisPos['pos'] # prints fine
print serPos['pos'] - hisPos['pos'] # errors with ufunc error

如有任何建议,我们将不胜感激!

最佳答案

serPos['pos']dtype 是复合的

dtype([('x', '<f8'), ('y', '<f8'), ('z', '<f8')])

减法(和其他此类操作)尚未为复合数据类型定义。它也不适用于 raw dtype。

您可以减去各个字段

serPos['pos']['x']-hisPos['pos']['x']

我认为我们还可以查看 serPos['pos'] 作为二维数组(3 列)并减去该形式。但我需要测试语法。

serPos['pos'].view((float,(3,)))

应该生成一个 (N,3) 二维数组。

关于python - 无法减去结构化 numpy 数组中的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38722747/

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