【问题标题】:Numpy: Code independent of dimensionality of arrayNumpy:代码独立于数组的维度
【发布时间】:2017-04-10 16:20:42
【问题描述】:

我有一个接受 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 很陌生,所以请原谅我,我真的不知道该用谷歌搜索什么。

【问题讨论】:

  • 您的问题数组具有形状 (3,),而不是 (1,3)。打印形状以供您自己查看。
  • @hpaulj 是正确的,尝试... x = np.atleast_2d(np.array([1,2,3])) 产生 ... x.shape => (1, 3 )
  • 你能给出你预期的输出吗?我想你可能想要keepdims 这里

标签: python arrays numpy dimensions


【解决方案1】:

您在寻找x / np.sum(x, axis=0) 吗? [None,:] 在这里没有任何用处,只是在一维情况下抛出错误。

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2019-04-26
    相关资源
    最近更新 更多