相关疑难解决方法(0)

编写接受1-D和2-D numpy数组的函数?

我的理解是numpy中的1-D数组可以被解释为面向列的向量或面向行的向量.例如,具有形状的1-D阵列(8,)可以被视为形状(1,8)或形状的2-D阵列,(8,1)这取决于上下文.

我遇到的问题是我编写的用于操作数组的函数在2-D情况下倾向于很好地推广以处理向量和矩阵,但在1-D情况下则不太好.

因此,我的函数最终会做这样的事情:

if arr.ndim == 1:
    # Do it this way
else:
    # Do it that way
Run Code Online (Sandbox Code Playgroud)

甚至这个:

# Reshape the 1-D array to a 2-D array
if arr.ndim == 1:
    arr = arr.reshape((1, arr.shape[0]))

# ... Do it the 2-D way ...
Run Code Online (Sandbox Code Playgroud)

也就是说,我发现我可以概括代码来处理2-d的情况下(r,1),(1,c),(r,c),但也不是没有分支或重塑1-d的情况.

当函数在多个数组上运行时,它会变得更加丑陋,因为我会检查并转换每个参数.

所以我的问题是:我错过了一些更好的成语吗?我上面描述的模式是否与numpy代码相同?

此外,作为API设计原则的相关问题,如果调用者将1-D数组传递给返回新数组的某个函数,并且返回值也是向量,则通常的做法是重新形成2-D向量(r,1)(1,c)回到1-D数组或简单地说明该函数返回2-D数组而不管?

谢谢

python api-design numpy vectorization

15
推荐指数
2
解决办法
3026
查看次数

标签 统计

api-design ×1

numpy ×1

python ×1

vectorization ×1