我想继承numpy ndarray。但是,我无法更改数组。为什么self = ...
不更改数组?谢谢。
import numpy as np
class Data(np.ndarray):
def __new__(cls, inputarr):
obj = np.asarray(inputarr).view(cls)
return obj
def remove_some(self, t):
test_cols, test_vals = zip(*t)
test_cols = self[list(test_cols)]
test_vals = np.array(test_vals, test_cols.dtype)
self = self[test_cols != test_vals] # Is this part correct?
print len(self) # correct result
z = np.array([(1,2,3), (4,5,6), (7,8,9)],
dtype=[('a', int), ('b', int), ('c', int)])
d = Data(z)
d.remove_some([('a',4)])
print len(d) # output the same size as original. Why?
也许使它成为一个函数,而不是一个方法:
import numpy as np
def remove_row(arr,col,val):
return arr[arr[col]!=val]
z = np.array([(1,2,3), (4,5,6), (7,8,9)],
dtype=[('a', int), ('b', int), ('c', int)])
z=remove_row(z,'a',4)
print(repr(z))
# array([(1, 2, 3), (7, 8, 9)],
# dtype=[('a', '<i4'), ('b', '<i4'), ('c', '<i4')])
或者,如果您希望将其用作方法,
import numpy as np
class Data(np.ndarray):
def __new__(cls, inputarr):
obj = np.asarray(inputarr).view(cls)
return obj
def remove_some(self, col, val):
return self[self[col] != val]
z = np.array([(1,2,3), (4,5,6), (7,8,9)],
dtype=[('a', int), ('b', int), ('c', int)])
d = Data(z)
d = d.remove_some('a', 4)
print(d)
此处的主要区别在于,remove_some
它不尝试修改self
,而仅返回的新实例Data
。
原文:Subclassing ndarray 介绍 子类化ndarray相对简单,但与其他Python对象相比,它有一些复杂性。 在这个页面上,我们解释了允许你子类化ndarray的机制,以及实现子类的含义。 ndarrays和对象创建 ndarray的子类化很复杂,因为ndarray类的新实例可以以三种不同的方式出现。 这些是: 显式构造函数调用 - 如MySubClass(params)。 这
创建基于对话框的应用程序主要是使用子类化 QDialog 的方法。在本节,我们采用这个方法创建一个稍微复杂的实例-可扩展对话框。 可扩展对话框通常只显示简单的外观,但是它还有一个切换按钮( toggle button), 可以让用户在对话框的简单外观和扩展外观之间来回切换。 可扩展对话框通常用于试图同时 满足普通用户和高级用户需要的应用程序中,这种应用程序通常会隐藏那些高级选项,除非 用户明确要求
问题内容: 给这篇Dobbs博士文章,尤其是Builder模式,我们如何处理将Builder子类化的情况?以该示例的简化版本为例,在该示例中我们想使用子类来添加GMO标签,一个简单的实现将是: 子类: 现在,我们可以编写如下代码: 但是,如果我们弄错了订单,那么一切都会失败: 问题当然是NutritionFacts.Builder返回a NutritionFacts.Builder,而不是a GM
问题内容: 我是java的新手,我试图创建一个XML文档并一遍又一遍地克隆此文档的特定节点(减去textnode)。有人回答了我,说我应该继承节点的子类并覆盖克隆。所以我的问题是 什么是子分类? 问题答案: @Charlie Martin解释了子类化的含义。 但是,尚不清楚您是否得到了很好的建议。如果要通过在内存中组装DOM来创建XML文档,则更好的方法将是使用静态方法创建一个助手类,该类执行需要
本文向大家介绍sprite-kit 子类化SKSpriteNode,包括了sprite-kit 子类化SKSpriteNode的使用技巧和注意事项,需要的朋友参考一下 示例 您可以子类化SKSpriteNode并定义自己的精灵类型。