小编Ced*_* H.的帖子

模糊指针声明

我有一个问题,在某种程度上,我想,完全是微不足道的:那是什么(以及为什么)?

const float *(*const*)(int)
Run Code Online (Sandbox Code Playgroud)

我的理解是它是一个"指向一个函数的常量指针的指针,该函数将一个int作为参数并返回一个指向常量float的指针".

这是对的吗 ?

如何"精神上解析" (*const*)?特别是因为没有名字,起初我不知道从哪里开始.我认为"名称"的唯一可能性就是这样:*const *name因为其他组合无效(如果我是正确的),那么"name是指向常量指针的指针......".

这种推理有效吗?

谢谢 !

c c++

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

从文本文件中提取Ruby数据

我有一个相对较大的文本文件,其中包含数据块,如下所示:

ANALYSIS OF X SIGNAL, CASE: 1
TUNE X =  0.2561890123390808

    Line Frequency      Amplitude             Phase             Error         mx  my  ms  p

1 0.2561890123391E+00 0.204316425208E-01 0.164145385871E+03 0.00000000000E+00   1   0   0   0
2 0.2562865535359E+00 0.288712798671E-01 -.161563284233E+03 0.97541196785E-04   1   0   0   0
Run Code Online (Sandbox Code Playgroud)

(它们包含更多行,然后重复)

我想先提取后面的数值,TUNE X =然后在文本文件中输出.然后我想提取数值LINE FREQUENCYAMPLITUDE作为一对值并输出到文件.

我的问题是:altough我可以做的东西moreorless使用简单REGEXP我不相信这是应该做正确的方式工作,我想一些建议或者代码的例子来说明我如何使用Ruby这样做有效.

ruby

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

多核计算机上的MPI

我的情况很简单:我想在一台多处理器/核心计算机上运行启用MPI的软件,比方说8。

我对MPI的实现是MPICH2。

据我了解,我有几种选择:

$ mpiexec -n 8 my_software

$ mpiexec -n 8 -hosts {localhost:8} my_software

或者我也可以将Hydra指定为“ fork”而不是“ ssh”;

$ mpiexec -n 8-启动叉my_software

您能告诉我是否会有任何差异,或者行为是否相同?

当然,由于我所有的节点都在同一台机器上,因此我不希望通过网络(甚至是本地循环)而是通过共享内存来进行“消息传递”。据我了解,MPI会弄清楚这一点,所有这三个选项都是如此。

mpi

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

Pandas 将多索引的所有级别转换为另一种类型

我有一个多索引,我想将其所有级别转换为浮动。

我正在做以下事情:

        my_dataframe.index.map(lambda i: (float(i[0]), float(i[1])))
Run Code Online (Sandbox Code Playgroud)

但是,如果我有很多级别,这似乎不能很好地“扩展”。

我试过这个:

        my_dataframe.index.astype(np.float, copy=False)
Run Code Online (Sandbox Code Playgroud)

但它失败了TypeError

TypeError: Setting <class 'pandas.core.indexes.multi.MultiIndex'> dtype to anything other than object is not supported
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳/最简单的方法是什么?

python python-3.x pandas

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

元类的 __new__ 和 __init__ 参数

我对方法调用顺序和覆盖newinit元类中的不同参数感到有些惊讶。考虑以下:

class AT(type):
    def __new__(mcs, name, bases, dct):
        print(f"Name as received in new: {name}")
        return super().__new__(mcs, name + 'HELLO', bases + (list,), dct)

    def __init__(cls, name, bases, dct):
        print(f"Name as received in init: {name}")
        pass

class A(metaclass=AT):
    pass

A.__name__
Run Code Online (Sandbox Code Playgroud)

输出是:

Name as received in new: A
Name as received in init: A
'AHELLO'
Run Code Online (Sandbox Code Playgroud)

简而言之,我本来预计init会收到AHELLO争论name

我想象这__init__是由super().__new__以下调用的:如果未在覆盖中完成调用,则不会调用__new__my __init__

有人可以澄清__init__在这种情况下如何调用吗?

有关信息,我的用例是我想在特殊情况下通过仅提供一个“基”类(而不是元组)来在运行时更轻松地创建类,然后我添加了以下代码__new__

if …
Run Code Online (Sandbox Code Playgroud)

python metaclass python-3.x

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

关于范围和寿命

引用"C++编程语言"(特别版,第4.9.6节"对象和左值"),众所周知:

[...]函数中声明的对象在遇到其定义时创建,并在其名称超出范围时销毁

好 !在4.9.4节中:

名称只能用于程序文本的特定部分.对于在函数中声明的名称,该范围从其声明点延伸到其声明发生的块的末尾.

听起来都不错!

但我的问题是:当控件到达块的末尾时,如何销毁(auto)变量?一个问题:实际情况如此吗?

例如:

int main()
{
  int* c = 0;
  {
    int b = 999;
    c = &b;
  } // End of the scope of b...
  std::cout << b; // ... so this is illegal
  // But ...
  std::cout << *c; // ... is OK, so 'b' has not really been destroyed
}
Run Code Online (Sandbox Code Playgroud)

我知道在退出函数范围时会破坏局部变量,因为函数调用中涉及到堆栈相关的事情.但是当退出一个简单的{ // ... }块时,没有任何反应.

它是否是一种特定的语言导致未定义的行为(在我的情况下,最后一个cout实际上是未定义的)但实际上在执行时没有效果(实际上没有执行任何操作来销毁对象)?

谢谢 !

编辑1:我不考虑静态变量.

编辑2:如果变量是带有析构函数的对象,我很清楚,我问的是非对象变量.

c++

4
推荐指数
2
解决办法
332
查看次数

Python使字典项可作为对象属性访问

这主要是语法糖,但我想访问字典中的项目作为对象属性.

例:

class CoolThing():
  def __init__(self):
    self.CoolDict = {'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)

而且我想拥有

my_cool_thing.a # => 1
my_cool_thing.b # => 2
Run Code Online (Sandbox Code Playgroud)

编辑:具有带点符号的嵌套结构的潜在解决方案的一些代码:device.property.field

class Parameters():

    def __init__(self, ids, devices):
        self._ids = ids
        self._devices = devices
        for p in self._devices:
            p = p[0]
            if self.__dict__.get(p.device) is None:
                self.__dict__[p.device] = SmartDict()
            else:
                if self.__dict__[p.device].get(p.property) is None:
                    self.__dict__[p.device][p.property] = SmartDict()
                else:
                    if self.__dict__[p.device][p.property].get(p.field) is None:
                        self.__dict__[p.device][p.property][p.field] = ParameterData(p)

class SmartDict():
    def __init__(self):
        self.__dict__ = {}

    def __getitem__(self, k):
        return self.__dict__[k]

    def __setitem__(self, k, v): …
Run Code Online (Sandbox Code Playgroud)

python

4
推荐指数
2
解决办法
136
查看次数

从Jython导入jar

我必须承认,我对Jython导入逻辑感到有些困惑.

我现在可以手动将jar一个一个地添加到sys.path但是我有一大堆这些,这非常痛苦.

添加包含jar的目录显然不起作用.

最好的方法是什么?

jython

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

matplotlib 和 Latex 之间的字体一致

我拼命地试图找到“最简单的方法”,以在我的 matplotlib 图形和乳胶文档中获得外观相同的文本。

到目前为止,我的策略是:

  • 为我的 Latex 图形设置一个明确的宽度,并使用 Matplotlib 设置相同的大小。这样在 mpl 中设置字体大小等于 Latex 字体大小应该是第一步

  • 使用usetex = Truempl 中的选项。我知道这应该使 mpl 使用 Latex 进行图中的所有文本处理(标题、标签、文本、注释等)。

我的问题是,最终我仍然无法按照自己的意愿设置字体。

这是一个示例,其中水平轴标签字体与刻度标签明显不同,我确信它们与我的乳胶文档的文本相同。

这是生成图形的代码:

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

with plt.style.context('journal'):
  fig_size = [3.4, 2.1]
  fig = plt.figure(1, figsize=fig_size)
  ax1 = plt.subplot(111)
  ax1.plot([1,2,3,4,5], '+--')
  ax1.set_xlabel(r'1 2 3 4.0 intensity [$10^{13}p$]')
  plt.tight_layout()
  fig.savefig('test.png') # I saved to png for SO but the goal is eps
Run Code Online (Sandbox Code Playgroud)

我的journalmpl 样式表是

backend: PS
text.usetex: …
Run Code Online (Sandbox Code Playgroud)

python fonts matplotlib

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

如何使用Avro序列化Scala案例类?

关注这个问题:Scala中的Avro序列化转换错误

case使用Avro 序列化Scala 类的最佳方法是什么?

这是我现在正在做的事情:

 def serializeSubmapRecord(record: MyRecord): Array[Byte] = {
    val out = new ByteArrayOutputStream()
    val encoder = EncoderFactory.get.binaryEncoder(out, null)
    val writer = new GenericDatumWriter[GenericRecord](avro_schema)
    val r = new GenericData.Record(avro_schema);
    r.put("my_number", 1);
    writer.write(r, encoder)
    encoder.flush
    out.close
    out.toByteArray
  }
Run Code Online (Sandbox Code Playgroud)

Avro架构所在的位置

{"namespace": "",
  "type": "record",
  "name": "MyRecord",
  "fields": [
    {"name": "my_number", "type": "int"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

不过我想要这样的东西:

case class MyRecord(my_number: Int)
val record = new MyRecord(1)

def serializeSubmapRecord(record: MyRecord): Array[Byte] = {
val out = new ByteArrayOutputStream()
val encoder = …
Run Code Online (Sandbox Code Playgroud)

scala avro

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

标签 统计

python ×4

c++ ×2

python-3.x ×2

avro ×1

c ×1

fonts ×1

jython ×1

matplotlib ×1

metaclass ×1

mpi ×1

pandas ×1

ruby ×1

scala ×1