【发布时间】:2016-08-28 17:52:38
【问题描述】:
我需要一个高效的异构数组,其中第一个元素是 int,其余元素是浮点数。然而,在创建它之后,基本的数组操作正在爆炸式增长。
A = np.zeros(1, dtype='i4, f4, f4')
B = np.array([3,3,3])
A + B
TypeError: invalid type promotion
【问题讨论】:
-
为什么不也提供 B 的 dtype?
-
dtype 语法是创建一三元组而不是一三元素数组。查看 np.zeros 的自定义 dtype。
-
@bejota 我不是这个意思。我的意思不是让它选择要使用的默认 int 类型,而是指定它或指定记录类型。如果您尝试为 B 提供 dtype
'i4, f4, f4',您得到的错误解释了为什么 OP 的原始请求没有意义(您需要字节来解释这样的数组)。所以使用记录类型并遍历字段。