【发布时间】:2015-05-19 22:52:45
【问题描述】:
我正在尝试使用存储在一组数组 (indexPositions) 中的索引来使用矩阵执行简单的数组操作。举个例子更容易解释
u[(indexPositions[:,1]):(indexPositions[:,2]),(indexPositions[:,0])]=0
对象 u 是一个大矩阵,对于给定的空间区域,我想将其值设置为零。 indexPositions[:,1] 包含“下限”索引,indexPositions[:,2] 包含“上限”索引。这反映了这样一个事实,即我想将它们之间的任何东西都设置为零,因此想在这些索引之间进行迭代。
indexPositions[:,0] 包含必须将上述行范围设置为零的列索引。
我不明白为什么不能这样做(我希望它清楚我想要实现的目标)。我确定它与 python 不了解它应该执行这些操作的顺序有关。有没有办法指定这个?矩阵非常大,这些操作发生了很多次,所以我真的不想使用慢的 python 循环。
【问题讨论】:
-
indexPositions看起来像什么?特别是,你能粘贴indexPositions[:,1]是什么吗? -
indexPositions[:,1]是一个整数数组,所有这些都严格小于(组件方面)indexPositions[:,2]我不会复制并过去整个事情,因为它很大,但提取会是[200 196 195 194 193 192 192 191 191 191 190 190 190 189 189 189 189 189 188 188 188 188 188 188 188 188 188 187 187 187 187 187 187 187 187 187 ...202 202 201 201 201 201 201 201 201 200 200 200 200 200 200 200 200 199](如果您对indexPositions[:,1/2]的每一列感兴趣,则表示翼型上表面和下表面的坐标。 -
我从未见过有人使用索引数组作为切片的一部分。如果我手动尝试,我会遇到与您相同的错误。见docs.scipy.org/doc/numpy/user/…