小编tbc*_*tbc的帖子

初始化和填充numpy数组的最佳方法?

我想初始化并填充一个numpy数组.什么是最好的方法?

这符合我的预期:

>>> import numpy as np
>>> np.empty(3)
array([ -1.28822975e-231,  -1.73060252e-077,   2.23946712e-314])
Run Code Online (Sandbox Code Playgroud)

但这不是:

>>> np.empty(3).fill(np.nan)
>>> 
Run Code Online (Sandbox Code Playgroud)

没有?

>>> type(np.empty(3))
<type 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)

在我看来,np.empty()调用返回正确类型的对象,所以我不明白为什么.fill()不工作?

分配np.empty()第一个工作结果正常:

>>> a = np.empty(3)
>>> a.fill(np.nan)
>>> a
array([ nan,  nan,  nan])
Run Code Online (Sandbox Code Playgroud)

为什么我需要分配给变量才能使用np.fill()?我错过了一个更好的选择吗?

python arrays numpy initialization multidimensional-array

27
推荐指数
2
解决办法
3万
查看次数

3d numpy记录数组

是否有可能在numpy中有一个3-D记录数组?(也许这是不可能的,或者只是一种更容易的方式来做事 - 我对其他选择持开放态度).

假设我想要一个包含3个变量数据的数组(比如temp,precip,humidity),每个变量的数据实际上是2年(行)和6个月数据(列)的二维数组,我可以创建像这样:

>>> import numpy as np

>>> d = np.array(np.arange(3*2*6).reshape(3,2,6))
>>> d

#
# comments added for explanation...
#        jan   feb   mar   apr   may   Jun    

array([[[ 0,    1,    2,    3,    4,    5],   # yr1  temp
        [ 6,    7,    8,    9,   10,   11]],  # yr2  temp

       [[12,   13,   14,   15,   16,   17],   # yr1  precip
        [18,   19,   20,   21,   22,   23]],  # yr2  precip

       [[24,   25,   26,   27,   28,   29],   # yr1  humidity
        [30,   31,   32,   33,   34, …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

pandas,matplotlib,使用数据框索引作为轴刻度标签

我正在使用matplotlib的imshow()函数来显示pandas.DataFrame.

我想从DataFrame.index和DataFrame.columns列表中绘制x和y轴的标签和刻度,但我无法弄清楚如何做到这一点.

假设datapandas.DataFrame:

>>> print data
<class 'pandas.core.frame.DataFrame'>
Index: 201 entries,  1901 to  2101
Data columns:
jan    201  non-null values
feb    201  non-null values
mar    201  non-null values
apr    201  non-null values
may    201  non-null values
jun    201  non-null values
jul    201  non-null values
aug    201  non-null values
sep    201  non-null values
oct    201  non-null values
nov    201  non-null values
dec    201  non-null values
Run Code Online (Sandbox Code Playgroud)

当我这样做:

ax1 = fig.add_subplot(131, xticklabels=data.columns, yticklabels=data.index)
ax1.set_title("A")
ax1.tick_params(axis='both', …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

实现真值表的一般模式

实施真值表有一个很好的一般模式吗?

我正在重新编写一些遗留代码(C++)并且意识到我正在使用的函数相当于具有3个二进制输入和8个可能输出的真值表.以下是八个测试中的两个和相应输出的示例:

// - + +
if ( (prevdst5 < 0.0) && (dst5 > 0.0) && (nextdst5 > 0.0) ){
    thawpct = (dst5 / (dst5 - prevdst5));
}

// - - +
if ( (prevdst5 < 0.0) && (dst5 < 0.0) && (nextdst5 > 0.0) ){
    thawpct = (nextdst5 / (nextdst5 - dst5));
}

// other cases...

return thawpct;
Run Code Online (Sandbox Code Playgroud)

基本上我想知道是否有更清晰,更可维护/可扩展的方式来设置它.

  • 如果添加了另一个输入怎么办?那么所需的if语句数量将是16,在我看来,使用当前模式进行管理会非常麻烦.
  • 如果几个输入组合应该映射到相同的输出怎么办?

*代码库是学术界使用的生态系统模型,因此维护和扩展相当于类似的东西,具体取决于编码器的角度.

c++

7
推荐指数
2
解决办法
1837
查看次数

Bokeh小部件为单个事件调用CustomJS和Python回调?

我有一个Bokeh应用程序,它利用各种小部件事件的Python回调.对于某些事件,我想在回调Python函数之前执行一些JavaScript代码.这可能吗?

在这种情况下,Python回调可能会长时间运行,并且我想在长时间运行的Python代码执行之前和之后启动和停止Javascript微调器对象.

javascript python bokeh

7
推荐指数
1
解决办法
1533
查看次数

numpy,如何生成一组正态分布的整数

生成正态分布的整数集的最佳方法是什么numpy?我知道我可以用这样的东西得到浮点数:

In [31]: import numpy as np

In [32]: import matplotlib.pyplot as plt

In [33]: plt.hist(np.random.normal(250, 1, 100))
Out[33]: 
(array([  2.,   5.,   9.,  10.,  19.,  21.,  13.,  10.,   6.,   5.]),
 array([ 247.52972483,  247.9913017 ,  248.45287858,  248.91445546,
         249.37603233,  249.83760921,  250.29918608,  250.76076296,
         251.22233984,  251.68391671,  252.14549359]),
 <a list of 10 Patch objects>)
Run Code Online (Sandbox Code Playgroud)

直方图

python statistics numpy scipy

5
推荐指数
2
解决办法
7571
查看次数

提升日志记录,按命名范围过滤

我在我的应用程序中使用了 boost log,虽然配置起来很棘手,但它通常运行良好。

但是,现在我想向我的应用程序添加一些更高级的过滤逻辑,但我无法弄清楚。

我想要的是有两个“级别”的过滤:

  1. 我已经使用了“严重记录器”有不同程度像debugwarnnote等等,这是设置和工作。
  2. 我想通过查看记录源自的“命名范围”来添加一种过滤记录的额外方法。

因此,例如,我希望能够仅查看严重性 >= 且note在 a NAMED_SCOPEof内的记录monthly

我已经成功地使用了BOOST_LOG_NAMED_SCOPE()宏,并且可以在日志消息中看到范围堆栈。

我曾尝试使用 实现自定义过滤器boost::phoenix,但无法使其正常工作。

我在此处粘贴的代码在我的应用程序中编译(我正在努力将其剥离,以便我可以在此处包含一个完整的工作最小示例),但该my_filter(..)函数中似乎没有发生任何事情。我认为我没有正确地将作用域堆栈传递到绑定函数中,因为如果我std::cout在作用域堆栈的循环中放置一个语句,我看不到任何打印内容。

这里的最小例子:

// Excerpt from MyLogger.cpp class

bool my_filter(attrs::named_scope_list const& scopeList) {
  for (attrs::named_scope_list::const_iterator iter = scopeList.begin(); iter != scopeList.end(); ++iter) {
    if ( (*iter).scope_name == "monthly") {
      return true;
    }
  }
  return false;
}

void setup_logging(std::string lvl) {

  logging::core::get()->add_global_attribute(
    "Scope", attrs::named_scope()
  );

  logging::add_console_log(
    std::clog,
    keywords::format …
Run Code Online (Sandbox Code Playgroud)

c++ logging boost

5
推荐指数
1
解决办法
2273
查看次数

散景如何为注释获取 GlyphRenderer

使用Bokeh,我如何获得 的Renderer(或GlyphRenderer)句柄Annotation?这可能吗?

我希望能够使用交互式图例打开和关闭a Band(即Annotation),因此我需要能够将 的列表传递RenderersLegendItem构造函数。

这段代码:

maxline = fig.line(x='Date', y=stn_max, line_width=0.5, legend=stn_max, name="{}_line".format(stn_max), color=stn_color, alpha=0.75, source=source)
minline = fig.line(x='Date', y=stn_min, line_width=0.5, legend=stn_min, name="{}_line".format(stn_min), color=stn_color, alpha=0.75, source=source)
band = bkm.Band(base='Date', lower=stn_min, upper=stn_max, fill_alpha=0.50, line_width=0.5, fill_color=stn_color, source=source)
bkm.LegendItem(label=stn, renderers=[maxline, minline, band])
Run Code Online (Sandbox Code Playgroud)

产生这个错误

...
ValueError: expected an element of List(Instance(GlyphRenderer)), got seq with invalid items [Band(id='1091', ...)]
Run Code Online (Sandbox Code Playgroud)

python plot bokeh

3
推荐指数
1
解决办法
1646
查看次数

在另一个类 VB.nET 的线程引发的事件上更新 GUI 项目

如何使用另一个类的线程正在接收的消息更新 GUI 中的数据?

我有一个带有从服务器接收数据的线程的类。每当从服务器获取消息时,该线程就会引发一个事件。此事件在 Starter Class(包含 GUI 的主类)内处理。事件处理程序(比如说DisplayData() 必须显示其他类收到的消息。我的代码是这样的

Class GUI
    receiverObj = New Receiver()
    Addhandler receiverObj.MessageAlert, Addressof DisplayData
    ...
    ...
    Sub DisplayData()
        Dim str As receiverObj.ReceiveData

        lbEvents.Add.Items(str)   ' lbEvents is a ListBox inside the GUI that displays messages from Receiver 
    End Sub
End Class


Class Receiver

    Public Event MessageAlert()
    Sub New ()
        MyTcpClient = New TcpClient(hostIP, port)               
        MyTcpClient.GetStream.BeginRead(ReceiveData, 0, PacketSize, AddressOf ReceiveStream, Nothing)
    End Sub

    Public Sub ReceiveStream(ByVal ar As IAsyncResult)
        Dim ByteCount As Integer

        Try
            ByteCount = …
Run Code Online (Sandbox Code Playgroud)

vb.net multithreading event-handling

2
推荐指数
1
解决办法
8463
查看次数

python,ipython运行交互式脚本

我有一个名为"poc.py"的脚本,它带有一个位置命令行参数"inputfile.txt".poc.py脚本用于argparse处理位置命令行参数,然后将args dict传递给main().进入后main(),我读取输入文件,进行一些处理,创建一个pandas DataFrame,最后绘制数据.我很难操纵我的DataFrame并控制结果图的确切格式,所以我想尝试ipython以交互方式探索这个,看看我是否能更好地掌握处理pandas/matplotlib的"pythonic"方法.

所以我尝试使用ipython并运行脚本,但是我无法让ipython保留我的脚本命名空间.

我试过这个:

$ ipython --pylab -i poc.py inputfile.txt
Run Code Online (Sandbox Code Playgroud)

哪个运行我的脚本就好了,并显示图(即使没有阻塞plt.show()调用),但是当脚本完成时,ipython whowhos命令说Interactive namespace is empty.同样,如果我首先进入ipython shell然后执行:

In [2]: run poc.py inputfile.txt
Run Code Online (Sandbox Code Playgroud)

当脚本完成时(再次,大量输出,图表显示)我得到相同的结果:一个空的交互式命名空间.

在理解如何运行外部并使用ipython以交互方式探索脚本中的数据/对象方面,我缺少什么?

这是我的脚本(poc.py)设置方式的准系统示例:

import numpy as np
import matplotlib as plt
import pandas as pd

# etc ...more libraries and custom functions here...

def main(args):
  data = np.genfromtxt(args.inputfile)

  # (omitted)...more data processing / manipulation...
  pdata = pd.DataFrame(data)

  # (omitted)...more data …
Run Code Online (Sandbox Code Playgroud)

python ipython pandas

2
推荐指数
1
解决办法
2235
查看次数