python - 以更有效的方式访问 3D 矩阵的所有奇数索引
问题描述
所以我有一个 3D numpy 矩阵,我想首先访问奇数索引,然后一旦我访问了所有奇数索引,我就想访问偶数索引。目前,我有两个三重嵌套的 for 循环,但这真的很慢。我现在拥有的可以在下面看到。第一个 if 语句是因为我不必访问立方体的边缘。我也将对 Matrix[i,j,k] 做其他事情并使其等于一个数字,但我的问题是有效地访问赔率,然后是偶数。
for i in range(self.size):
for j in range(self.size):
for k in range(self.size):
if i==0 or i==(self.size-1) or j==0 or j==(self.size-1) or k==0 or k==(self.size-1):
pass
elif (i+j+k)% 2==1:
Matrix[i,j,k]=2
else:
pass
for i in range(self.size):
for j in range(self.size):
for k in range(self.size):
if i==0 or i==(self.size-1) or j==0 or j==(self.size-1) or k==0 or k==(self.size-1):
pass
elif (i+j+k)% 2==0:
Matrix[i,j,k]=4
else:
pass
解决方案
您正在使用总和的剩余部分,但没有必要给您奇数或偶数,因为奇数 + 奇数 + 偶数将是偶数。不过,您可以使用 NumPy 不仅支持标量作为索引的事实。如果您指定,您也可以省略使用if
with a 。您可以使用以下代码:pass
range(1, self.size-1)
Matrix[range(1,self.size-1,2),range(1,self.size-1,2),range(1,self.size-1,2)]=2
Matrix[range(2,self.size-1,2),range(2,self.size-1,2),range(2,self.size-1,2)]=2
第三个参数允许您迭代每个第二个数字
推荐阅读
- docker - 来自守护进程的错误响应:Get https://registry-1.docker.io/v2/: dial tcp:lookup registry-1.docker.io...i/o timeout
- android - 带有 rgba 的背景线性渐变不会出现在 google chrome android 中,但在 chrome 桌面中可以正常工作
- javascript - 将 Base64/BLOB 图像数据从 PHP 发送到 Javascript
- javascript - 如何选择多个复选框reactjs?
- javascript - How do I make a javascript function a html attribute?
- intellij-idea - 在 IntelliJ IDEA 中导入 ControlP5 时出现问题(与处理核心一起使用)
- spring - 如何为具有共享接口的扩展类创建切入点或周围?
- android - Android 网页视图无法打开此网站
- matlab - 如何在MATLAB中获得简化形式的求和?
- ios - 自定义表格视图单元格中忽略的约束