Numpy全局保持维度

hfyxw5xn  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(79)

目前,大多数numpy函数会自动删除单例维度,为了保留它们,需要记住各种参数,例如keepdims=Truenp.newaxis。我想知道是否有(或将有)一个全局设置,因为我正在编写一个程序,需要保持尺寸的所有时间。我理想的代码应该是这样的

import numpy as np
np.setparams(keepdims=True)  # anything like this?

x = np.random.randint(10, size=(5, 10))
np.sum(x, axis=0).shape  # prints (1, 10)
x[:, 0].shape  # prints (5, 1)

谢谢你,谢谢!

5rgfhyps

5rgfhyps1#

根据你正在处理的numpy版本,你可以做的是研究感兴趣的函数的签名,目前是numpy.sum,找到numpy.sum._implementation.__defaults__中的默认值,并根据你的意愿改变它。

>>> import numpy as np
>>> a = np.arange(5)
>>> np.sum(a)
10
>>> (defaults := numpy.sum._implementation.__defaults__)
(None, None, None, False, <no value>, <no value>)
#                  ^^^^^
>>> numpy.sum._implementation.__defaults__ = (defaults[:3], True, defaults[4:])
>>> np.sum(a)
array([10])

但是,哪种解决方案不会影响numpy.ndarray.sum

>>> a.sum()
10

相关问题