小编roo*_*kie的帖子

无法理解numpy argpartition输出

我试图从numpy使用arpgpartition,但似乎出现了问题,我似乎无法弄明白.这是发生了什么:

这些是排序数组的前5个元素 norms

np.sort(norms)[:5]
array([ 53.64759445,  54.91434479,  60.11617279,  64.09630585,  64.75318909], dtype=float32)
Run Code Online (Sandbox Code Playgroud)

但是当我使用时 indices_sorted = np.argpartition(norms, 5)[:5]

norms[indices_sorted]
array([ 60.11617279,  64.09630585,  53.64759445,  54.91434479,  64.75318909], dtype=float32)
Run Code Online (Sandbox Code Playgroud)

当我认为我应该得到与排序数组相同的结果?

当我使用3作为参数时,它工作得很好 indices_sorted = np.argpartition(norms, 3)[:3]

norms[indices_sorted]
array([ 53.64759445,  54.91434479,  60.11617279], dtype=float32)
Run Code Online (Sandbox Code Playgroud)

这对我来说没有多大意义,希望有人可以提供一些见解?

编辑:将这个问题改为argpartition是否保留k个分区元素的顺序更有意义.

python arrays numpy

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

计算项目大于pandas groupby中的值

我有Yelp数据集,我想要计算所有超过3星的评论.通过这样做,我得到了评论的数量:

reviews.groupby('business_id')['stars'].count()
Run Code Online (Sandbox Code Playgroud)

现在我想得到超过3星的评论数,所以我试着从这里获取灵感:

reviews.groupby('business_id')['stars'].agg({'greater':lambda val: (val > 3).count()})
Run Code Online (Sandbox Code Playgroud)

但这只是给了我以前所有明星的数量.我不确定这是否是正确的方法?我在这里做错了什么.lambda表达式是不是通过星列的每个值?

编辑:好的,我觉得很蠢.我应该使用sum函数而不是count来获取大于3的元素的值,如下所示:

reviews.groupby('business_id')['stars'].agg({'greater':lambda val: (val > 3).sum()})
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

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

Python HTTP服务器保持连接活跃

我正在尝试测试用C编写的HTTP客户端,该客户端将HTTP POST请求发送到计算机上的本地服务器。我keep-alive在计算机上运行的python3 HTTP服务器上的POST请求中添加了标头,如下所示:

<ip-address-1> - - [29/Apr/2018 18:27:49] "POST /html HTTP/1.1" 200 -
Host: <ip-address-2>
Content-Type: application/json
Content-Length: 168
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100


INFO:root:POST request,
Body:
{
"field": "abc",
"time": "2018-04-29T01:27:50.322000Z" 
}
Run Code Online (Sandbox Code Playgroud)

HTTP服务器POST处理程序如下所示:

class S(BaseHTTPRequestHandler):
    def _set_response(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.send_header("Connection", "keep-alive")
        self.send_header("keep-alive", "timeout=5, max=30")
        self.end_headers()

    def do_POST(self):
        content_length = int(self.headers['Content-Length']) # <--- Gets the size of data
        post_data = self.rfile.read(content_length) # <--- Gets the data itself
        print(self.headers)
        logging.info("POST request,\nBody:\n%s\n", post_data.decode('utf-8'))

        self._set_response()
        self.wfile.write("POST request for {}".format(self.path).encode('utf-8'))

def …
Run Code Online (Sandbox Code Playgroud)

http httpserver http-headers python-3.x

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

sklearn test train split - 获取原始列表文件名的索引

我正在使用该test_train_split模块sklearn生成用于训练和测试的随机数据集组合。我有一个指向原始数据集的文件路径列表。我还想知道数据是如何混洗的,或者以相同的方式混洗文件路径列表,以便在混洗/拆分数据集可用后能够跟踪文件路径?

python machine-learning scikit-learn

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