【问题标题】:Numpy Slicing - Strange behaviorNumpy Slicing - 奇怪的行为
【发布时间】:2021-05-05 14:05:33
【问题描述】:

我对 Numpy 有疑问。基本上我只想在 for 循环中做一个简单的赋值。但奇怪的是,这不起作用。这是我的示例代码:

import numpy as np
test = np.zeros((1280,),dtype=int)
idx = 0
for i in range(32):
       test[idx:idx+40] = np.ones((40,),int)*1
       idx = idx + 1
print(np.where(test==0))

我会假设循环之后test 中的所有值都等于 1,但是我的程序的输出是 (array([ 71, 72, 73, ..., 1277, 1278, 1279]),) 我不明白为什么数组中仍然有 0 的值。尤其是在索引 72 处,它位于循环的第二次迭代的中间。

你能帮帮我吗? 谢谢!

【问题讨论】:

  • 您的意思是将idx 增加40 而不是1?
  • 这篇文章能回答你的问题吗? post
  • 天啊,当然谢谢。我实际上想用 [idx*40:idx*40+40] 进行索引。有点尴尬,我现在已经搜索了2个多小时。再次感谢!

标签: python numpy numpy-indexing


【解决方案1】:

idx 用于索引时的最大值将为 31,因此在增加它之前。从数组索引 31 开始,您会将 40 个元素设置为 1。最后一个这样的元素位于索引 31+39,即 70。索引 71 处的元素仍然是 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2018-05-27
    相关资源
    最近更新 更多