小编szm*_*ore的帖子

为什么"numpy.asarray(...)中的无"会导致未来的警告

当您执行以下操作时,会发生未来警告:

>>> numpy.asarray([1,2,3,None]) == None
Run Code Online (Sandbox Code Playgroud)

目前返回False,但据我所知,将返回包含[False,False,False,True]在Numpy的未来版本中的数组.

正如在numpy讨论列表中所讨论的,解决这个问题的方法是测试a is None.

令我困惑的是,in与列表相比,具有1D数组的关键字的这种行为:

>>> None in [1,2,3,None]
True
>>> None in numpy.asarray([1,2,3,None])
__main__:1: FutureWarning: comparison to 'None' will result in an elementwise 
    object comparison in the future
False
>>> 1 in numpy.asarray([1,2,3,None])
True
Run Code Online (Sandbox Code Playgroud)

编辑(见评论) - 真的有两个不同的问题:

  1. 为什么这会导致FutureWarning- 将未来的行为None in numpy.asarray(...)与现在的行为进行比较?
  2. 为什么行为的差异in来自于list; 我可以测试我的数组是否包含None而不将其转换为列表或使用for循环?

Numpy版本是1.9.1,Python 3.4.1

python numpy nan

13
推荐指数
1
解决办法
6403
查看次数

我应该使用文件描述符或流来读/写套接字

设置套接字后,最好在套接字描述符上使用read(2)和write(2)调用,或者使用fdopen(3)将流与套接字描述符关联,然后使用stdio(3)函数?

int sfd = socket(PF_INET, SOCK_STREAM, 0);
// setup the socket using sfd
FILE * stream = fdopen(sfd, "r+");
// use fprintf, fscanf, etc
Run Code Online (Sandbox Code Playgroud)

编辑:我也解密流

setbuf(stream, NULL)
Run Code Online (Sandbox Code Playgroud)

为避免必须按照评论中的提及进行刷新.

我一直在使用这种方法,因为它允许我重用为FILE*流编写的代码,并且我的优点是能够使用格式字符串(我正在使用人类可读的文本).GNU似乎暗示这是一个好主意.

http://www.gnu.org/software/libc/manual/html_node/Streams-and-File-Descriptors.html

但是,通常当我看到使用套接字的代码时,使用套接字描述符而不是所有操作的流.使用较低级别的功能是否有优势?

c sockets file-io

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

标签 统计

c ×1

file-io ×1

nan ×1

numpy ×1

python ×1

sockets ×1