【发布时间】:2014-02-16 23:17:10
【问题描述】:
非常简单的问题:我有一个包含多列的结构化数组,我只想用另一个预先存在的数组填充其中的一些(但不止一个)。
这就是我正在尝试的:
strc = np.zeros(4, dtype=[('x', int), ('y', int), ('z', int)])
x = np.array([2, 3])
strc[['x', 'y']][0] = x
这给了我这个未来的警告:
main:1:FutureWarning:Numpy 检测到您(可能)正在写入数组 由 numpy.diagonal 或通过选择记录中的多个字段返回 大批。此代码可能会在未来的 numpy 版本中中断—— 有关详细信息,请参阅 numpy.diagonal 或 arrays.indexing 参考文档。 快速解决方法是制作一个明确的副本(例如,做 arr.diagonal().copy() 或 arr[['f0','f1']].copy())。
但即使这是一个警告,结构化数组也不会被填充。到目前为止,我正在迭代两个数组并且它有效,但我想这是非常低效的。有没有更好的办法?
【问题讨论】:
-
stackoverflow.com/questions/3058602/… 指出尝试索引多个字段会产生副本,而不是视图。如果您使用的行多于字段,则迭代字段没有任何问题。
标签: python numpy structured-array