Numpy:代码独立于数组的维度
Numpy: Code independent of dimensionality of array
我有一个接受 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]))
我知道为什么会出现错误(求和只是第二个函数调用中的一个标量),但是如果没有一堆 if 语句,我如何让它工作?
我是 numpy 的新手,所以请原谅我,我真的不知道 google 有什么用。
您在寻找 x / np.sum(x, axis=0)
吗? [None,:]
在这里没有任何用处,仅用于在 1D 情况下引发错误。
我有一个接受 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]))
我知道为什么会出现错误(求和只是第二个函数调用中的一个标量),但是如果没有一堆 if 语句,我如何让它工作?
我是 numpy 的新手,所以请原谅我,我真的不知道 google 有什么用。
您在寻找 x / np.sum(x, axis=0)
吗? [None,:]
在这里没有任何用处,仅用于在 1D 情况下引发错误。