Numpy:代码独立于数组的维数

时间:2016-11-26 13:47:29

标签: python arrays numpy dimensions

我有一个带有numpy数组的函数。我知道它不是形状 (1,C)或(R,C)

我需要的是将每个条目除以其相应列的总和。 我读了this question,如果我得到一个(R,C)数组,接受的答案就有效。但是,对于(1,C)数组,我尝试访问具有不存在的维度的标量,从而引发错误。 有没有办法使这项工作独立于数组的维度? 请参阅下面的代码:

import numpy as np

def f(x):
    sums = np.sum(x, axis = 0)
    return (x / sums[None,:])



scores = np.array([[1.0, 2, 3, 6],
                   [2, 4, 5, 6],
                   [3, 8, 7, 6]])

print f(scores)
print f(np.array([1,2,3]))

我知道为什么会出现错误(sums只是第二个函数调用中的标量),但是如何在没有一堆if语句的情况下让它工作?

我对numpy很新,所以原谅我,我真的不知道谷歌的用途。

1 个答案:

答案 0 :(得分:0)

您在寻找overflow: hidden/scroll吗? x / np.sum(x, axis=0)在这里没有任何有用的效果,只会在1D情况下抛出错误。