python - 使用索引向量对特定矩阵元素执行数学运算
问题描述
我想基于 3D 掩码(包含 1 和 0)对 3D 数据集上的特定元素执行简单的操作。我想做的操作是除法,因为我不想将 NaN 引入我的数据集,所以我只想对掩码内的元素执行除法。此外,我将在具有相当大矩阵的大型数据集上执行此操作,因此我想尽可能避免 for 循环。
这是一些代码:
inside_mask = numpy.where(mask_data>0)
这给了我三个 1 x 97442 的向量,其值对应于我的掩码中的一个索引,其中我有一个“一”。即 vector1[0], vector2[0], vector3[0] 是我有一个“一个”的第一个元素。
因此我可以这样做:
for i in range(0,97442):
row = inside_mask[0][i]
col = inside_mask[1][i]
depth = inside_mask[2][i]
someValue = valueMatrix[row, col, depth]
calculation[row, col, depth] = signal_data[row, col, depth]/someValue
所以问题很简单:我怎样才能只用元素操作而不用 for 循环来做到这一点?
真诚的,杰斯珀
解决方案
import numpy as np
myarr = np.random.randint(2,size=[10,10,10]).astype(float)
someValue = 3
myarr[myarr>0] = myarr[myarr>0]/someValue
推荐阅读
- sql - 使用带有数字和字符串的 CASE WHEN 语句执行 JPA/JPQL
- machine-learning - 如何从给定的句子中提取信息
- python - 如何在python中做数据相关聚类图
- node.js - Couchbase 在 nodeJS 中检索关系文档
- navigation - Nativescript Vue this.$navigateTo 什么都不做
- sql - How To Pull In Columns From A Derived Table Or Sub Query
- java - 2d array TicTacToe logic and syntax issues in Java
- assembly - 从地址中删除坏字符
- mysql - POST 路由的 React Express Heroku 503 错误
- powershell - `cat 一些文件 | powershell 中的 cat` 给出 10000 行而不是 100