如何在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文档好几天了。
非常感谢你!
答案 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
请注意,您的问题与numpy
或arrays
无关。另请注意,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]])