多个1D阵列上的Numpy函数序列相同

时间:2016-12-01 17:04:10

标签: python arrays function numpy

如何在Python中在相同长度的多个1D数组上执行相同的Numpy函数序列?

例如:

import numpy as np
subtotal1 = np.array([4, 7, 1, 3, 9])
subtotal2 = np.array([5, 3, 6, 5, 2])
...etc.
total = np.array([9, 10, 7, 8, 11])

subtotal1 = np.divide(subtotal1, total)
subtotal1 = np.round(subtotal1 * 100, 1)
subtotal2 = np.divide(subtotal2, total)
subtotal2 = np.round(subtotal2 * 100, 1)
...etc.

我是一名新的Python程序员,我正在学习Numpy来分析数据和创建可视化。我已经搜索了StackOverflow和Numpy文档好几天了。

非常感谢你!

2 个答案:

答案 0 :(得分:1)

这就是你的意思:

import numpy as np
subtotal1 = np.array([4, 7, 1, 3, 9],float)
subtotal2 = np.array([5, 3, 6, 5, 2],float)
total = subtotal1+subtotal2

for subtotal in (subtotal1, subtotal2):
    subtotal = np.divide(subtotal, total)
    subtotal = np.round(subtotal * 100, 1)
    print subtotal

重要如果你没有将subtotal1和2设置为浮点数,则除法将给你零(整数除法),而这不是你想要的。

由于您没有说明如何创建这些小计,假设您可以随时将它们附加到列表中,代码很容易推广:

//Create subtotals before
total = sum(subtotals)
for subtotal in subtotals
    subtotal = np.divide(subtotal, total)
    subtotal = np.round(subtotal * 100, 1)
    print subtotal

请注意,您的问题与numpyarrays无关。另请注意,sum不是numpy总和 - 这是不同的。在开始之前阅读一些普通的Python教程。

答案 1 :(得分:0)

您可以加入2D数组中的所有subtotal数组,并对整个数组进行两次操作。这将导致两个阵列之间的逐行操作。为此,必须使两个阵列的形状沿第二(列)轴相等。

import numpy as np

subtotal = np.arange(20,dtype=float).reshape((5,4))
total = np.array([8.2,3.4,6.0,1.3])
print subtotal

[[  0.   1.   2.   3.]
 [  4.   5.   6.   7.]
 [  8.   9.  10.  11.]
 [ 12.  13.  14.  15.]
 [ 16.  17.  18.  19.]]

np.round(subtotal/total*100,1)

array([[    0. ,    29.4,    33.3,   230.8],
       [   48.8,   147.1,   100. ,   538.5],
       [   97.6,   264.7,   166.7,   846.2],
       [  146.3,   382.4,   233.3,  1153.8],
       [  195.1,   500. ,   300. ,  1461.5]])