无法在Dask数组中赋值:报错‘不支持int类型元素赋值’求助
Dask数组赋值报错:不支持int类型元素赋值的解决方法
Dask数组是不可变数据结构,没法像NumPy那样直接用x[0] = 1.0做原地赋值操作,这就是你报错的原因。官方文档里说的"赋值可行",指的是通过特定方法生成新的Dask数组来实现值的替换,而非修改原数组。
这里给两种常用的解决方式:
方法一:使用da.where
通过条件掩码定位目标位置,替换对应的值:
import dask.array as da x = da.zeros(10) # 生成掩码,标记第0个元素的位置 mask = da.arange(10) == 0 # 替换掩码对应位置的值,返回新数组 x = da.where(mask, 1.0, x)
方法二:使用da.put
直接指定索引和要替换的新值:
import dask.array as da x = da.zeros(10) # 替换索引0处的值为1.0,返回新数组 x = da.put(x, indices=[0], values=[1.0])
两种方法都会返回一个新的Dask数组,原数组x不会被修改——这符合Dask基于不可变数据的设计逻辑。
内容的提问来源于stack exchange,提问作者Romain Gérard
相关产品推荐
相关产品推荐

