【发布时间】:2011-06-13 01:23:44
【问题描述】:
[Python 3]
我喜欢ndarray,但我觉得用起来很烦。
这是我面临的一个问题。我想编写class Array,它将继承ndarray 的大部分功能,但只有一种实例化方式:作为特定大小的零填充数组。我希望写:
class Array(numpy.ndarray):
def __init__(size):
# What do here?
我想用一些参数调用super().__init__ 来创建一个零填充数组,但它不起作用,因为ndarray 使用全局函数numpy.zeros(而不是构造函数)来创建一个零- 填充数组。
问题:
为什么 ndarray 在很多情况下使用全局(模块)函数而不是构造函数?如果我试图在面向对象的环境中重用它们,那就太麻烦了。
定义我需要的
class Array的最佳方式是什么?我应该手动用零填充ndarray,还是有办法重用zeros函数?
【问题讨论】:
-
我不明白你为什么要创建自己的课程。与
numpy.zeros()工厂函数相比有什么优势?如果你不喜欢这个名字,只需重命名它,比如create_array = numpy.zeros。 -
我不再确定是否有优势。也许我只是不习惯工厂功能。我得考虑一下。
-
@Sven Marnach:我找到了几个关于这个一般主题的链接:stackoverflow.com/questions/628950/…stackoverflow.com/questions/2959871/…stackoverflow.com/questions/4617311/… 没有特定于 Python,但其他语言的一般 cmets 似乎适用。据我所知,工厂功能确实没有缺点(除了我个人的喜好)。
标签: python numpy python-3.x wrapper