Python 一次将数组中的每个项目拆分为一个数组

Python 一次将数组中的每个项目拆分为一个数组,python,logging,numpy,Python,Logging,Numpy,我有一个3X4X4形状的numpy aray,如图所示: [[[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]]] 我想将数组中每个4 X4矩阵中的每个数字除以0.25。 然后我想记录所有这些值。(因此,我将每个数组中的所有值除以.25,然后取该数字的日志

我有一个3X4X4形状的numpy aray,如图所示:

[[[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]]]
我想将数组中每个4 X4矩阵中的每个数字除以0.25。 然后我想记录所有这些值。(因此,我将每个数组中的所有值除以.25,然后取该数字的日志) 输出应该是相同的3x4x4矩阵,只是改变了值。 任何建议

您只需执行以下操作:

numpy.log(yourNumpyArray / 0.25)
numpy将做正确的事情(将每个元素除以0.25)

阅读更多信息:

您只需执行以下操作:

numpy.log(yourNumpyArray / 0.25)
numpy将做正确的事情(将每个元素除以0.25)

阅读更多信息:


    • 我看不出这有什么不对

      >> 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]]])
      

      我看不出这有什么问题

      >> 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]]])
      

      来自premature micro optimization部门,
      np.log(yourNumpyArray)-np.log(0.25)
      给出了相同的结果,但用廉价的减法代替了昂贵的除法。在我的系统上大约快了10%。@Jaime weird,在我的系统中正好相反:
      >>%timeit np.log(a/0.25)
      给出了
      100000个循环,最好的3个循环:每个循环8.99µs
      >>%timeit np.log(a)-np.log(0.25)
      导致:
      100000个循环,最好的3个循环:10.3µs每个循环
      (稍微慢一点)我在一个大(1000x1000)阵列上运行了它。与OP的问题一样,对
      np.log
      的额外调用可能会消耗掉所有的改进。在我的系统上,交叉发生在阵列中约800个项目上。@Jaime就是这样,然后,我精确地使用OP的输入进行了测试。谢谢分享。=)来自premature micro optimization部门,
      np.log(yourNumpyArray)-np.log(0.25)
      给出了相同的结果,但用廉价的减法代替了昂贵的除法。在我的系统上大约快了10%。@Jaime weird,在我的系统中正好相反:
      >>%timeit np.log(a/0.25)
      给出了
      100000个循环,最好的3个循环:每个循环8.99µs
      >>%timeit np.log(a)-np.log(0.25)
      导致:
      100000个循环,最好的3个循环:10.3µs每个循环
      (稍微慢一点)我在一个大(1000x1000)阵列上运行了它。与OP的问题一样,对
      np.log
      的额外调用可能会消耗掉所有的改进。在我的系统上,交叉发生在阵列中约800个项目上。@Jaime就是这样,然后,我精确地使用OP的输入进行了测试。谢谢分享。=)