小编Ste*_*ing的帖子

类中的"不完整类型",它具有类本身的相同类型的成员

我有一个类应该有一个同一个类的私有成员,如:

class A {
    private:
        A member;
}
Run Code Online (Sandbox Code Playgroud)

但它告诉我,成员是一个不完整的类型.为什么?如果我使用指针,它不会告诉我不完整的类型,但我宁愿不使用指针.任何帮助表示赞赏

c++ types member private-members incomplete-type

36
推荐指数
3
解决办法
7万
查看次数

使用Sklearn的TfidfVectorizer变换

我正在尝试使用Sklearn的TfidfVectorizer对象获取单个文档的tf-idf向量.我根据一些训练文档创建词汇表,并使用fit_transform训练TfidfVectorizer.然后,我想找到任何给定测试文档的tf-idf向量.

from sklearn.feature_extraction.text import TfidfVectorizer

self.vocabulary = "a list of words I want to look for in the documents".split()
self.vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='word', 
                 stop_words='english')
self.vect.fit_transform(self.vocabulary)

...

doc = "some string I want to get tf-idf vector for"
tfidf = self.vect.transform(doc)
Run Code Online (Sandbox Code Playgroud)

问题是这会返回一个包含n行的矩阵,其中n是我的doc字符串的大小.我希望它只返回一个代表整个字符串的tf-idf的向量.我怎样才能将字符串视为单个文档,而不是每个字符都是文档?另外,我对文本挖掘很新,所以如果我在概念上做错了,那就太棒了.任何帮助表示赞赏.

python document text-mining tf-idf

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

为什么FD_SET/FD_ZERO用于循环内的select()?

我正在使用select函数在我的套接字之间进行通信.我有一个循环,我做 -

    while(!done) {

    FD_ZERO(&read_flags);
    FD_ZERO(&write_flags);
    FD_SET(comm_fd1, &read_flags);
    FD_SET(comm_fd2, &read_flags);
    FD_SET(STDIN_FILENO, &read_flags);
    FD_SET(comm_fd1, &write_flags);
    FD_SET(comm_fd2, &write_flags);
    FD_SET(STDIN_FILENO, &write_flags);

    //call select
    sel = select(comm_fd1+comm_fd2+1, &read_flags, &write_flags, (fd_set*)0, &waitd);
Run Code Online (Sandbox Code Playgroud)

和客户端的不同变量相同.我从在线教程中获得了这个基本技术,并且随之而来.然后它打了我 - 为什么我每次循环时清除集合并添加文件描述符?如果它们已经添加,为什么要清除它们并再次添加?所以我尝试在此之前只执行一次,并且代码不再相同.有人可以解释原因吗?是否因为select修改了集合的内容?任何帮助和/或见解表示赞赏.

c++ select tcp file-descriptor clear

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

崩溃正常,但没有GDB?

正常运行时,我的程序崩溃并出现分段错误.所以我用gdb运行它,但是当我这样做时它不会崩溃.有谁知道为什么会这样?我知道Valgrind的faq提到了这一点(并没有在valgrind下崩溃),但我真的找不到与谷歌中的gdb相关的任何内容.如果有人能告诉我原因,或者在发生这种情况时建议寻找一些东西,我将非常感激.

crash gdb segmentation-fault

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

g ++ -D标志有什么作用?

我正在看一个CFLAGS -

CFLAGS=-g -w -D LINUX -O3 -fpermissive
Run Code Online (Sandbox Code Playgroud)

在Makefile中.-D标志有什么作用?我在手册页上看到了

-D name
    Predefine name as a macro, with definition 1. 
Run Code Online (Sandbox Code Playgroud)

但我不知道如何解释.我的解释是......它使LINUX成为一个宏,并且在linux环境中只做-03和-fpermissive.是对的吗?如果没有,那又怎样?谢谢你的帮助

linux flags compilation g++

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

无法打开共享对象文件

我正在尝试编译这里找到的项目之一USB-I2C/SPI/GPIO接口适配器.

我下载了i2c_bridge-0.0.1-rc2.tgz包.我安装了libusb,似乎没有任何问题.我进入i2c_bridge-0.0.1-rc2/目录并制作.编译.我进入i2c_bridge-0.0.1-rc2/i2c文件夹并制作.它编译并给我./i2c.但是,当我运行它时,它说error while loading shared libraries: libi2cbrdg.so: cannot open shared object file: No such file or directory

makefile中i2c_bridge-0.0.1-rc2/i2c的库目录为../.在libi2cbrdg.so此目录中(i2c_bridge-0.0.1-rc2).我也把文件复制到了/usr/local/lib.一个ls在的i2c_bridge-0.0.1-rc2/目录

i2c        i2cbrdg.d  i2cbrdg.o  libi2cbrdg.a   Makefile  tests
i2cbrdg.c  i2cbrdg.h  INSTALL    libi2cbrdg.so  README    u2c4all.sh
Run Code Online (Sandbox Code Playgroud)

(那i2c是一个目录)

如果我sudo ./i2c,它仍然给我问题.

我不得不在所有makefile中删除-Werror-noWdecrepated(拼写?)选项以使它们进行编译,但这不应该影响它吗?

找到.so文件还需要什么?如果有人能帮我找出问题所以我会非常感激.如果需要更多信息,我可以发布.

debian build find shared-objects

16
推荐指数
3
解决办法
5万
查看次数

如何使用numpy的hstack?

我有一个大的numpy.ndarray数组,我想从第4列和第5列中提取出来并将这些列放入2D数组中.[i,0]元素应该是第4列的值,[i,1]应该是第5列的元素.

我尝试使用numpy.hstack函数来执行此操作.

a = numpy.asarray([1, 2, 3, 4, 5])
for i in range(5):
    a = numpy.vstack([a, numpy.asarray([1, 2, 3, 4, 5])])

combined = np.hstack([a[:,3], a[:,4]])
Run Code Online (Sandbox Code Playgroud)

但是,这只是给了我一个nx1数组.我尝试了使用concatenate的多种方法,看起来像这些例子:

combined = np.concatenate([a[:,3], a[:,4]])

combined = np.concatenate([a[:,3], a[:,4]], axis=1)

combined = np.concatenate([a[:,3].T, a[:,4].T])
Run Code Online (Sandbox Code Playgroud)

我觉得hstack是我想要的功能,但我似乎无法弄清楚如何让它给我一个nx2数组.谁能指出我正确的方向?任何帮助表示赞赏.

python arrays numpy concatenation

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

为什么matplotlib.PatchCollection会弄乱补丁的颜色?

我制作了许多补丁 -

node.shape = RegularPolygon((node.posX, node.posY),
                            6,
                radius = node.radius,
                                    edgecolor = 'none',
                                    facecolor = node.fillColor,
                                    zorder = node.zorder)

node.brushShape = RegularPolygon((node.posX, node.posY),
                            6,
                node.radius * 0.8,
                linewidth = 3,
                                    edgecolor = (1,1,1),
                                    facecolor = 'none',
                                    zorder = node.zorder)
Run Code Online (Sandbox Code Playgroud)

最初我只是把它们直接放在我的轴上 - 就像这样 -

self.plotAxes.add_artist(node.shape)
self.plotAxes.add_artist(node.brushShape)
Run Code Online (Sandbox Code Playgroud)

这工作得很好.但是现在我想将它们放入PatchCollection并将PatchCollection放到轴上.然而,当我这样做时,我的所有形状都只是蓝色.我不明白只是投入一个集合是如何以某种方式改变颜色.任何人都可以帮我解决我需要做什么来保持我输入的颜色值作为补丁的faceColor?

新代码是 -

node.shape = RegularPolygon((node.posX, node.posY),
                        6,
            radius = node.radius,
                                edgecolor = 'none',
                                facecolor = node.fillColor,
                                zorder = node.zorder)

node.brushShape = RegularPolygon((node.posX, node.posY),
                        6,
            node.radius * 0.8,
            linewidth = 3,
                                edgecolor = (1,1,1),
                                facecolor …
Run Code Online (Sandbox Code Playgroud)

python patch colors matplotlib

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

将select()用于非阻塞套接字

我正在尝试使用select函数在服务器和1个客户端(不再)之间进行非阻塞i/o,其中通信流畅(可以随时发送而另一个将在不等待发送的情况下接收).我找到了一些包含一些代码的教程,并尝试将其改编为我的.这就是我所拥有的 -

服务器

#define PORT "4950"
#define STDIN 0

struct sockaddr name;

void set_nonblock(int socket) {
    int flags;
    flags = fcntl(socket,F_GETFL,0);
    assert(flags != -1);
    fcntl(socket, F_SETFL, flags | O_NONBLOCK);
}


// get sockaddr, IPv4 or IPv6:
void *get_in_addr(struct sockaddr *sa) {
    if (sa->sa_family == AF_INET)
        return &(((struct sockaddr_in*)sa)->sin_addr);

    return &(((struct sockaddr_in6*)sa)->sin6_addr);
}

int main(int agrc, char** argv) {
    int status, sock, adrlen, new_sd;

    struct addrinfo hints;
    struct addrinfo *servinfo;  //will point to the results

    //store the connecting address and size …
Run Code Online (Sandbox Code Playgroud)

c sockets select bsd

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

重载operator <为优先级队列

我试图建立一个像我这样的类的优先级队列 -

std::priority_queue<Position> nodes;
Run Code Online (Sandbox Code Playgroud)

我在这样的位置重载了<运算符 -

bool Position::operator<(Position& right) {
    return (fvalue < right.getFValue());
}
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试编译时,我都会收到此错误消息,指出<运算符未过载 -

error: no match for ‘operator<’ in ‘__x < __y’
position.h:30: note: candidates are: bool Position::operator<(Position&)
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?任何帮助表示赞赏.

c++ operator-overloading priority-queue operators conditional-operator

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