小编gab*_*abe的帖子

试图用Python解析JSON.ValueError:期望属性名称

我试图将JSON对象解析为Python dict.我以前从未这样做过.当我搜索这个特定错误时,(第一个char有什么问题?),其他帖子说加载的字符串实际上不是JSON字符串.不过,我很确定这是.

在这种情况下,eval()工作正常,但我想知道是否有更合适的方式?

注意:此字符串直接来自Twitter,通过ptt工具.

>>> import json
>>> line = '{u\'follow_request_sent\': False, u\'profile_use_background_image\': True,
         u\'default_profile_image\': False, 
         u\'verified\': False, u\'profile_sidebar_fill_color\': u\'DDEEF6\',
         u\'profile_text_color\': u\'333333\', u\'listed_count\': 0}'
>>> json.loads(line)

Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
     File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 326, in loads
       return _default_decoder.decode(s)
     File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
       obj, end = self.raw_decode(s, idx=_w(s, 0).end())
     File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode
       obj, end = self.scan_once(s, idx)
   ValueError: Expecting property name: line 1 …
Run Code Online (Sandbox Code Playgroud)

python twitter json

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

在Scipy中切片稀疏矩阵 - 哪种类型最好?

SciPy 稀疏矩阵教程非常好 - 但它实际上留下了切片un(der)开发的部分(仍然是大纲形式 - 参见章节:"处理稀疏矩阵").

一旦这个问题得到解答,我会尝试更新教程.

我有一个大的稀疏矩阵 - 目前采用dok_matrix格式.

import numpy as np
from scipy import sparse
M = sparse.dok_matrix((10**6, 10**6))
Run Code Online (Sandbox Code Playgroud)

对于各种方法,我希望能够切割列,而对于其他我希望切片行.理想情况下,我会使用高级索引(即布尔向量bool_vect)来对稀疏矩阵进行切片M- 如下所示:

bool_vect = np.arange(10**6)%2  # every even index
out = M[bool_vect,:]            # Want to select every even row
Run Code Online (Sandbox Code Playgroud)

要么

out = M[:,bool_vect] # Want to select every even column
Run Code Online (Sandbox Code Playgroud)

首先,dok_matrices不支持这个 - 但我认为如果我第一次转向lil_matrices,它会缓慢地工作 sparse.lil_matrix(M)

至于我可以从教程中收集 - 切片列我想使用CSC并切片行我想要切片CSR.那么这是否意味着我应该M通过以下方式投射矩阵:

M.tocsc()[:,bool_vect]
Run Code Online (Sandbox Code Playgroud)

要么

M.tocsr()[bool_vect,:]
Run Code Online (Sandbox Code Playgroud)

我有点猜测,因为它,我的代码很慢.任何了解其工作原理的人的帮助都会受到赞赏.提前致谢.

如果事实证明我不应该使用布尔数组索引我的矩阵,而是使用整数(索引)列表 - 这也是我很乐意找到的东西.哪个更有效率.

最后 - 这是一个很大的矩阵,如果这可以在广播中发生,那么奖励积分.

python indexing scipy sparse-matrix slice

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

为什么浏览器不从缓存中加载cdn文件?

这是一个非常简单的例子来说明我使用CDN中的JQuery修改页面的问题:

<html>
  <body>
    <p>Hello Dean!</p>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script>$("p").html("Hello, Gabe!")</script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当您使用互联网连接加载此页面时,页面将显示"Hello Gabe".当我关闭互联网连接时,页面显示"Hello Dean"并显示错误 - JQuery不可用.

我的理解是CDN的有很长Cache-Control并且Expire在头响应,这是我理解的意思是,浏览器本地缓存文件.

$ curl -s -D - https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js | head

HTTP/1.1 200 OK
Server: cloudflare-nginx
Date: Fri, 17 Apr 2015 16:30:33 GMT
Content-Type: application/javascript
Transfer-Encoding: chunked
Connection: keep-alive
Last-Modified: Thu, 18 Dec 2014 17:00:38 GMT
Expires: Wed, 06 Apr 2016 16:30:33 GMT
Cache-Control: public, max-age=30672000
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有发生.有人可以解释一下发生了什么吗?另外 - 我怎样才能让浏览器在某个地方的缓存中使用JQuery的副本?

出现这个问题是因为我们希望使用CDN来服务外部库,但也希望能够离线开发页面 - 就像在飞机上一样.

我使用Chrome和Firefox获得了类似的行为.

html5 caching cdn browser-cache offline-caching

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

最小的稀疏矩阵?

在scipy.sparse中似乎没有一个方法给出了稀疏矩阵的最小值.特别是,我寻求最小的列.

文档中没有方法,numpy最小值不适用.如果X是稀疏矩阵,X.min()也会抛出错误:*** AttributeError: 'module' object has no attribute 'min'.

当然这必须是人们使用的东西.这是怎么做到的?

numpy scipy sparse-matrix

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

Scipy Sparse Matrices - 不一致的和

我有一个稀疏矩阵,我通过一系列复杂的计算得出,我无法在这里重现.我将尝试找到一个更简单的例子.

目前,有没有人知道如何(甚至远程)可能有一个稀疏矩阵X,其属性为:

In [143]: X.sum(0).sum()
Out[143]: 131138

In [144]: X.sum()
Out[144]: 327746

In [145]: X.sum(1).sum()
Out[145]: 327746

In [146]: type(X)
Out[146]: scipy.sparse.csr.csr_matrix
Run Code Online (Sandbox Code Playgroud)

我唯一的猜测是,如果我想正确地对列进行求和,我需要首先将矩阵转换为csc - 这是有道理的.虽然人们会认为稀疏包可以优雅地处理列总和(或抛出错误)而不是仅仅给出错误的答案.

经过深思熟虑后,我尝试了以下方法:

In [164]: X.tocsr().sum(0).sum()
Out[164]: 131138

In [165]: X.tocsc().sum(0).sum()
Out[165]: 131138

In [166]: X.tocoo().sum(0).sum()
Out[166]: 131138

In [167]: X.tolil().sum(0).sum()
Out[167]: 131138

In [168]: X.todok().sum(0).sum()
Out[168]: 131138

In [169]: X.shape
Out[169]: (196980, 43)

In [170]: X
Out[170]: 
<196980x43 sparse matrix of type '<type 'numpy.uint16'>'
        with 70875 stored elements in Compressed Sparse Row format>

In …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy sparse-matrix

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

Python包估计Perron-Frobenius特征值的实数,正方形,非负矩阵

是否有优化的包或方法来估计真实,方形,非负矩阵的Perron-Frobenius特征值?这可能比精确计算明显更快(特别是对于大和/或稀疏矩阵) - 假设可以通过迭代矩阵来得到Perron-Frobenius特征值.我希望存在一个优化的包,它可以做到这一点.

python numpy scipy sparse-matrix

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

unix sort -n -t","给出意想不到的结果

即使我指定了分隔符,unix数字排序也会产生奇怪的结果.

$ cat example.csv  # here's a small example
58,1.49270399401
59,0.000192136419373
59,0.00182092924724
59,1.49270399401
60,0.00182092924724
60,1.49270399401
12,13.080339685
12,14.1531049905
12,26.7613447051
12,50.4592437035

$ cat example.csv | sort -n --field-separator=,
58,1.49270399401
59,0.000192136419373
59,0.00182092924724
59,1.49270399401
60,0.00182092924724
60,1.49270399401
12,13.080339685
12,14.1531049905
12,26.7613447051
12,50.4592437035
Run Code Online (Sandbox Code Playgroud)

对于此示例,无论是否指定分隔符,sort都会给出相同的结果.我知道如果我设置LC_ALL=C然后排序开始再次给出预期的行为.但我不明白为什么默认环境设置,如下所示,会使这种情况发生.

$ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

我从许多其他问题(例如这里,这里这里)中读到了如何避免这种行为,但是,这种行为令人难以置信的奇怪和不可预测,并引起了我一周的心痛.有人可以解释为什么Mac OS X(10.8.5)上的默认环境设置排序会这样吗?换句话说:什么是排序(使用局部变量设置为en_US.UTF-8)来获得该结果?

我正在使用

 sort 5.93                        November 2005

 $ type sort
 sort is /usr/bin/sort
Run Code Online (Sandbox Code Playgroud)

UPDATE

我已经在gnu-coreutils列表上讨论了这个问题,现在明白为什么使用英语unicode默认语言环境设置进行排序可以得到输出.因为在英文unicode中,逗号字符","被认为是数字(以便允许逗号为千位(或例如数百)分隔符),并且在解释一行时将默认值排序为"贪婪",它会读取示例数字约为

581.491...
590.000...
590.001...
591.492...
600.001...
601.492...
1213.08...
1214.15...
1226.76... …
Run Code Online (Sandbox Code Playgroud)

unix csv sorting locale

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