python - Numpy Slicing - 奇怪的行为
问题描述
我对 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
当您将其用于索引时,最大值将为 31,因此在您增加它之前。从数组索引 31 开始,您会将 40 个元素设置为 1。最后一个这样的元素位于索引 31+39,即 70。索引 71 处的元素仍然为 0。
推荐阅读
- loops - VBScript - 如何使用 Sendkeys 而不使我的计算机循环和崩溃?
- firebase - Firebase - 限制 Web 应用程序的 API 密钥
- wcf - WCF 和 .NET 5.0:字节数组反序列化问题
- javascript - 试图在 C++ 中从 JS 重新创建这段代码
- ios - Fastlane 企业 iOS 证书即将到期
- javascript - 在 shadow-root 中注入 CSS 样式而不是 head 标签 | Vue.js 和 Webpack
- c# - 在 ASP.NET 中的不同类之间传递值并将它们存储在初始类中
- android - Android从broadcastReceiver向webView发送值
- python - 如何将提及变量转换为普通变量并将其打印到我的终端
- git - 能够将 git 提交作者更改为任何内容的理由是什么?