小编dgo*_*sen的帖子

将csv加载到带有numpy的2D矩阵中进行绘图

鉴于此CSV文件:

"A","B","C","D","E","F","timestamp"
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12
Run Code Online (Sandbox Code Playgroud)

我只想将它作为矩阵/ ndarray加载3行和7列.但是,出于某种原因,我可以摆脱numpy的是一个有3行(每行一个)而没有列的ndarray.

r = np.genfromtxt(fname,delimiter=',',dtype=None, names=True)
print r
print r.shape

[ (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291111964948.0)
 (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291113113366.0)
 (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291120650486.0)]
(3,)
Run Code Online (Sandbox Code Playgroud)

我可以手动迭代并将其破解成我想要的形状,但这看起来很傻.我只是想把它作为一个合适的矩阵加载,这样我就可以将它切成不同的尺寸并绘制它,就像在matlab中一样.

python csv arrays numpy reshape

69
推荐指数
2
解决办法
16万
查看次数

python中的数据流计算

我有n(通常n <10但应该扩展)进程在不同的机器上运行并使用RabbitMQ通过amqp进行通信.进程通常是长时间运行的,可以用任何语言实现(尽管大多数是java/python).

每个过程都需要许多输入(数字/字符串)并产生许多输出(也只是数字或字符串).执行进程是异步发生的:在其输入队列上发送消息并等待输出队列触发回调.

理想情况下,用户指定一些输入和所需的输出,系统应该:

  • 检测需要哪些进程并生成依赖图
  • 在拓扑上对图形进行排序并执行它,节点转换需要是事件驱动的

如果节点的输入就绪,节点应该触发,允许每个分支并行.我现在可以假设没有循环,但最终会有循环(例如,两个进程可能需要迭代直到输出不再变化).

这应该是(数据)流程编程(之前讨论过)的已知问题,我想避免重新发明轮子.我更喜欢python解决方案,搜索引导TrellisPypes.Trellis不再开发,但似乎支持周期,而pypes则不支持.也不确定pypes是如何积极开发的.

进一步的搜索揭示了基于事件的编程框架的完整列表,其中没有一个我特别了解.当然有像TavernaKNIME这样的工作流程环境,但这似乎有些过分.

有没有人有解决这类问题或提到的图书馆的经验?

编辑:我发现的其他库是:

python workflow scheduling event-based-programming amqp

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

将REST行为添加到带有烧瓶的类中,用于蓝图的情况?

我正在处理一个python应用程序,它由多个分布式轻量级组件组成,这些组件使用RabbitMQKombu进行通信.

组件侦听两个队列,并且可以在每个队列上接收多个消息类型.子类可以通过注册自定义处理程序来覆盖每种消息类型的处理方式.这一切都很好.

我现在有一个额外的要求,即每个组件必须具有基本的REST/HTML接口.您的想法是将浏览器指向正在运行的组件,并获取有关当前正在执行的操作的实时信息(处理的消息,CPU使用情况,状态信息,日志等)

它需要是轻量级的,所以经过一些研究我已经确定了Flask(但我愿意接受建议).在伪代码中,这意味着:

class Component:
   Queue A
   Queue B
   ...
   def setup(..):
     # connect to the broker & other initialization

   def start(..):
     # start the event loop and wait for work  

   def handle_msg_on_A(self,msg):
     # dispatch a msg to a handler depending on the msg type

   def handle_msg_on_B(self,msg):
     ...

   ...
Run Code Online (Sandbox Code Playgroud)

并添加了许多视图方法:

   @app.route('/')
   def web_ui(self):
      # render to a template

   @app.route('/state')
   def get_state(self):
      # REST method to return some internal state info as JSON

   ...
Run Code Online (Sandbox Code Playgroud)

但是,将Web UI固定到类似这样的类上会破坏 …

python rest design-patterns amqp flask

11
推荐指数
1
解决办法
8798
查看次数

将预处理层添加到keras模型并设置张量值

如何最好地将预处理层(例如,减去平均值并除以std)添加到keras(v2.0.5)模型,以使模型完全自包含以进行部署(可能在C++环境中).我试过了:

    def getmodel():
       model = Sequential()
       mean_tensor = K.placeholder(shape=(1,1,3), name="mean_tensor")
       std_tensor = K.placeholder(shape=(1,1,3), name="std_tensor")

       preproc_layer = Lambda(lambda x: (x - mean_tensor) / (std_tensor + K.epsilon()),
                              input_shape=im_shape)

       model.add(preproc_layer)

       # Build the remaining model, perhaps set weights,
       ...

       return model
Run Code Online (Sandbox Code Playgroud)

然后,在其他地方设置模型的均值/标准.我找到了set_value函数,所以尝试了以下方法:

m = getmodel()
mean, std = get_mean_std(..)

graph = K.get_session().graph
mean_tensor = graph.get_tensor_by_name("mean_tensor:0")
std_tensor = graph.get_tensor_by_name("std_tensor:0")

K.set_value(mean_tensor, mean)
K.set_value(std_tensor, std)
Run Code Online (Sandbox Code Playgroud)

然而set_value失败了

AttributeError: 'Tensor' object has no attribute 'assign'
Run Code Online (Sandbox Code Playgroud)

所以set_value不适用(有限的)文档建议.这样做的正确方法是什么?获取TF会话,将所有训练代码包装在一个with (session)并使用feed_dict?我原本以为会有一种原生的keras方式来设置张量值.

我没有使用占位符,而是尝试使用K.variable或设置模型构造的均值/标准 …

python deep-learning keras tensorflow keras-layer

11
推荐指数
1
解决办法
3051
查看次数

RabbitMQ重新排序消息

RabbitMQ勾选我正在计划的项目的所有方框,保存一个.我会让不同的工作人员在队列中进行监听,并且最重要的是他们首先处理最新的消息(即最新的序列号)(LIFO).

我的应用程序是这样的,新的消息几乎废弃旧消息.如果您有工作人员,您仍然可以处理较旧的消息,但重要的是先完成新的消息.

在浏览各种论坛之后,我只能看到一个解决方案,那就是客户端应首先处理消息:

  • 消费所有消息
  • 根据序列号重新排序
  • 重新提交到队列
  • 消费第一条消息

如果客户中途死亡,那就很丑陋且有问题.但是mabye这里有人有更好的解决方案.

我的研究(部分)基于:

注意:对于某些队列,消息的预期流量大致在1 msg /小时的范围内,而对于其他队列则大约为100 /分钟.所以没什么了不起的.

priority-queue amqp publish-subscribe rabbitmq

9
推荐指数
1
解决办法
4225
查看次数

knockoutJS是否支持受保护的可观察数组?

处理可以在KnockoutJS中提交/丢弃的可观察数组的最佳方法是什么?

我之前使用ProtectedObservable想法实现了这一点,但这是在单个数据记录上,而不是在数组上.

只是想知道如何最好地前进.我的项目需要所有电子邮件地址联系人的对话框和所选的列表.当它们从左侧的列表中添加时,它们将被删除并添加到右侧的列表中.

当按下"确定"按钮时,它们会被添加到"收件人:"字段中,但是当按下"取消"时,列表将恢复到之前的状态(之前可能已经填充过).

knockout.js

8
推荐指数
1
解决办法
2285
查看次数

通知工人关闭的芹菜任务

我正在使用芹菜2.4.1与python 2.6,rabbitmq后端和django.如果工人关闭,我希望我的任务能够正确清理.据我所知,你不能提供任务析构函数,所以我尝试挂钩worker_shutdown信号.

注意:AbortableTask仅适用于数据库后端,因此我无法使用它.

from celery.signals import worker_shutdown

@task
def mytask(*args)

  obj = DoStuff()

  def shutdown_hook(*args):
     print "Worker shutting down"
     # cleanup nicely
     obj.stop()

  worker_shutdown.connect(shutdown_hook)

  # blocking call that monitors a network connection
  obj.stuff()
Run Code Online (Sandbox Code Playgroud)

但是,永远不会调用shutdown hook.Ctrl-C'ing工作人员不会杀死任务,我必须从shell手动杀死它.

因此,如果这不是正确的方法,我如何允许任务正常关闭?

python rabbitmq celery django-celery

8
推荐指数
1
解决办法
5428
查看次数

使用d3为传单创建密度和值热图图层

我想用d3在传单地图上实现热图图层.我有大约2-3k的数据点.

我的数据格式如下:

[{lat: .., lon: .., value: ..}, {lat: .., lon: .., value: ..}, ...]
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想在基于值的热图之间切换,以及基于点的密度.我还需要能够动态更新数据.在视觉上我的目标是这样的:

热图示例

我知道传单有几个热图插件,两者都不是很活跃.Heatmap.js最接近我的需要.但是,它似乎没有维护,文档与源代码不一致,而且运行速度太慢.我已经广泛使用d3,如果可能的话,我更愿意将它用于热图图层.

有一个或两个块浮动(例如,这一个)但我找不到一个有效.这最接近我的需要.它仍然适用于最新的传单版本,但理想情况下我想使用渐变渐变(如heatmap.js)而不是hexbins.我还需要重写代码处理数据的方式并调整其他一些位(例如,它绘制密度,而不是值).

理想情况下,我希望以Mikes传单风格的方式提供解决方案.有什么建议?

更新:我还发现了webgl-heatmap的这个传单包装,但似乎已经破了

javascript svg geospatial d3.js leaflet

8
推荐指数
1
解决办法
1万
查看次数

如何在knockoutjs中实现复选框依赖项

我有一组复选框

  • 复选框A.
  • 复选框B.
  • 复选框C.

使用foreach数据绑定生成:

<input type="checkbox" data-bind="value: id, checked: $root.chkboxSelected" />
Run Code Online (Sandbox Code Playgroud)

从observableArray中获取其检查状态.所以检查一个框会将相应的值添加到数组中,标准的knockoutjs可以正常工作.然后我想添加一个简单的规则:

如果选中C,则还必须检查A和B.

在knockoutjs中添加这种逻辑的最简洁方法是什么?我尝试使用可写的可计算的observable:

var viewModel = {
      foo: observableArray(),
      ..
    };

viewModel.chkboxSelected = ko.computed({
      read: function() {
        return this.foo();
      },
      write: function(value){
            //add it if not added already
        if($.inArray(value, this.foo()) < 0) {
            this.foo.push(value);
        }

            // if C is present then A,B must be as well         
        if($.inArray("C", this.foo()) >= 0) {
          if($.inArray("B", this.foo()) < 0) {
            this.foo().push("B");
          }

          if($.inArray("A", this.foo()) < 0) {
                this.foo().push("A");
          }

        }
      },
      owner: …
Run Code Online (Sandbox Code Playgroud)

javascript checkbox dependencies knockout.js

6
推荐指数
1
解决办法
4987
查看次数

nvd3散点图与序数比例

我相对较新的d3和nvd3,并希望创建一个简单的散点图,就像示例,但有一个序数 y轴.所以y轴值是分类字符串.这就是我认为我需要做的事情:

var xfun = function (d) { return d.Pos }    //simple ints
  , yfun = function (d) { return d.Title }  //the ordinal values

var chart = nv.models.scatterChart()
    .showDistX(true)
    .showDistY(true)
    .color(d3.scale.category10().range())
    .margin({ top: 30, right: 20, bottom: 50, left: 130 })
    .tooltips(false)
    .x(xfun)   
    .y(yfun);

// create an ordinal scale with some test values
var ys = d3.scale.ordinal()
    .domain(["this","is","an","ordinal","scale"])
    .range(5);

// tell nvd3 to use it
chart.yAxis.scale(ys);

// add to the page
nv.addGraph(function () {
    d3.select(selector).datum(data).transition().duration(500).call(chart);
    nv.utils.windowResize(chart.update); …
Run Code Online (Sandbox Code Playgroud)

javascript scatter-plot ordinal d3.js nvd3.js

6
推荐指数
2
解决办法
7587
查看次数