我正在使用Python、numpy和scikit-learn。我有存储在 SQL 表中的键和值的数据。我将其作为元组列表检索为:[(id, value),...]。每个 id 在列表中只出现一次,元组按 id 升序排列。这个过程完成了几次,所以我有多个key: value对的列表。这样:
dataset = []
for sample in samples:
listOfTuplePairs = getDataFromSQL(sample) # get a [(id, value),...] list
dataset.append(listOfTuplePairs)
Run Code Online (Sandbox Code Playgroud)
密钥可能在不同的样本中重复,并且每一行的长度可能不同。一个例子dataset可能是:
dataset = [[(1, 0.13), (2, 2.05)],
[(2, 0.23), (4, 7.35), (5, 5.60)],
[(2, 0.61), (3, 4.45)]]
Run Code Online (Sandbox Code Playgroud)
可以看出,每一行都是一个样本,并且一些id(在本例中为2)出现在多个样本中。
问题:我希望构建一个适合用 scikit-learn 处理的单个(可能是稀疏的)numpy 数组。与每个样本的特定键 (id) 相关的值应在同一“列”中对齐(如果这是正确的术语),以便上述示例的矩阵如下所示:
ids = 1 2 3 4 5
------------------------------
dataset = [(0.13, …Run Code Online (Sandbox Code Playgroud) 我有一个Object带有state日期时间参数的方法的类dt。如何将日期时间参数从 URL 传递到Object.state()?
该模型:
class Object(models.Model):
def state(self, dt=datetime.datetime.now()) -> dict:
...stuff...
return {'dt': dt, 'other_stuff': stuff}
Run Code Online (Sandbox Code Playgroud)
风景:
class ObjectDetail(generics.RetrieveAPIView):
queryset = models.Object.objects.all()
serializer_class = serializers.ObjectSerializer
def get_serializer_context(self):
return {'dt': self.request.query_params.get('dt', datetime.datetime.now())}
def get(self, request, *args, **kwargs):
return self.retrieve(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
和序列化器类:
class ObjectSerializer(serializers.HyperlinkedModelSerializer):
state = StateSerializer(read_only=True, context={'dt': self.context['dt']})
class Meta:
model = models.Object
fields = ('state')
class StateSerializer(serializers.Serializer):
dt = serializers.DateTimeField()
... other stuff...
Run Code Online (Sandbox Code Playgroud)
如您所见,我试图在视图中较早设置上下文dt的行state = StateSerializer(read_only=True, context={'dt': …
我希望alert()每次在 React 中跟踪的 Meteor 订阅withTracker更改时都显示一个模式对话框(例如)。
我试过使用 Tracker.autorun来跟踪更改,但无法确定在代码中放置它的位置。它似乎在Component构造函数中不起作用,如果放在render().
这是我的代码的概述:
class Foo extends Component {
render() {
return (
<h1>Example Header</h1>
{ this.maybeShowAlert() }
);
}
maybeShowAlert() {
// ONLY if bar has been updated
alert('bar has changed');
}
}
export default withTracker(() => {
Meteor.subscribe('bar')
return {
bar: Bar.findOne({})
};
})(Foo);
Run Code Online (Sandbox Code Playgroud)