python - 在 numpy 数组的第三个维度中,将前三个值乘以第四个值

标签 python arrays numpy

这是一个 3 维 numpy 数组:

import numpy as np
m = np.array([
  [ 
    [1,2,3,2], [4,5,6,3]
  ],
  [
    [7,8,9,4], [1,2,3,5]
  ]
])

对于每个元组,我需要将前三个值乘以最后一个值(除以 10 并四舍五入),然后仅保留 3 个结果。例如在[1,2,3,2]中:

  • 1 变为:round(1 * 2/10) = 0
  • 2 变为:round(2 * 2/10) = 0
  • 3 变为:round(3 * 2/10) = 1

因此,[1,2,3,2] 变为:[0,0,1]

完整的结果将是:

[
  [ 
    [0,0,1], [1,2,2]
  ],
  [
    [3,3,4], [1,1,2]
  ]
]

我尝试将 alpha 变量中每个元组的最后一个值与 rgb 变量中的前 3 个值分开。

alpha = m[:, :, 3] / 10
rgb = m[:, :, :3]

但是之后我是Python的初学者,我真的不知道如何处理这些数组。

非常欢迎经验丰富的 Python 人员提供一点帮助。

最佳答案

试试这个

n = np.rint(m[:,:,:3] *  m[:,:,[-1]] / 10).astype(int)

Out[192]:
array([[[0, 0, 1],
        [1, 2, 2]],

       [[3, 3, 4],
        [0, 1, 2]]])

关于python - 在 numpy 数组的第三个维度中,将前三个值乘以第四个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59990455/

相关文章:

python - 为什么不能在 f 字符串中使用 "await"?

python - 查找一个数组中的相同值以及另一个数组中的等价对

python - 如何将 numpy apply_over_axes 与 lambda 函数一起使用?

python - numpy数组的插值最大插值距离

python - 如何提取垂直条件下的行

Python - Virtualenv,python 3?

python - 使用 SQLFORM.grid 添加/编辑条目时对表引用下拉列表进行排序

javascript - 将对象数组中两个属性的唯一值存储到单个数组中

java - 如何找到以给定字符串开头的单词?

python - 通过广播逐元素添加稀疏 scipy 矩阵向量