一次性对二维数组中每个元素进行除法运算

1 投票
3 回答
706 浏览
提问于 2025-04-18 02:32

我有一个形状为3X4X4的numpy数组,如下所示:

[[[0 0 0 2]
  [0 0 0 0]
  [1 0 0 0]
  [0 0 0 0]]

 [[0 1 0 0]
  [0 0 0 0]
  [0 0 0 0]
  [0 1 1 0]]

 [[0 0 0 0]
  [0 1 1 0]
  [0 0 1 0]
  [0 0 0 0]]]

我想把这个数组里面每个4X4的矩阵里的每个数字都除以0.25。然后再对这些值取对数。(也就是说,我是先把每个数组里的所有值都除以0.25,然后再对这个结果取对数)最后的输出应该还是一个3X4X4的矩阵,只是里面的数值发生了变化。有没有什么建议?

3 个回答

2

在编程中,有时候我们会遇到一些问题,想要找到解决方案。StackOverflow是一个很好的地方,大家可以在这里提问和回答问题。这里的内容通常是一些技术讨论,涉及到代码的使用和问题的解决。

在这个平台上,用户可以分享他们的经验,帮助其他人解决编程中的难题。无论是初学者还是有经验的开发者,都能在这里找到有用的信息和建议。

总之,StackOverflow就像一个编程的问答社区,大家可以在这里互相学习,共同进步。

import numpy as np

arr = np.array([[[0, 0, 0, 2],[0, 0, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0]], [[0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ,[0, 1, 1, 0]] ,[[0, 0, 0, 0], [0, 1, 1, 0] ,[0, 0, 1, 0] ,[0, 0, 0, 0]]])
arr /= 0.25
arr = np.log(arr)
3

我看不出这有什么问题

>> import numpy as np
>> a = np.array([[[0, 0, 0, 2],[0, 0, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0]], [[0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ,[0, 1, 1, 0]] ,[[0, 0, 0, 0], [0, 1, 1, 0] ,[0, 0, 1, 0] ,[0, 0, 0, 0]]])
>> a
[[[0, 0, 0, 2], [0, 0, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0]],
 [[0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 1, 1, 0]],
 [[0, 0, 0, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 0, 0]]]

>> np.log(a/0.25)

array([[[       -inf,        -inf,        -inf,  2.07944154],
        [       -inf,        -inf,        -inf,        -inf],
        [ 1.38629436,        -inf,        -inf,        -inf],
        [       -inf,        -inf,        -inf,        -inf]],

       [[       -inf,  1.38629436,        -inf,        -inf],
        [       -inf,        -inf,        -inf,        -inf],
        [       -inf,        -inf,        -inf,        -inf],
        [       -inf,  1.38629436,  1.38629436,        -inf]],

       [[       -inf,        -inf,        -inf,        -inf],
        [       -inf,  1.38629436,  1.38629436,        -inf],
        [       -inf,        -inf,  1.38629436,        -inf],
        [       -inf,        -inf,        -inf,        -inf]]])
5

你可以简单地这样做:

numpy.log(yourNumpyArray / 0.25)

这样,numpy会自动处理好(把每个元素都除以0.25)

想了解更多:

撰写回答