我试图将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) 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)
我有点猜测,因为它,我的代码很慢.任何了解其工作原理的人的帮助都会受到赞赏.提前致谢.
如果事实证明我不应该使用布尔数组索引我的矩阵,而是使用整数(索引)列表 - 这也是我很乐意找到的东西.哪个更有效率.
最后 - 这是一个很大的矩阵,如果这可以在广播中发生,那么奖励积分.
这是一个非常简单的例子来说明我使用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获得了类似的行为.
在scipy.sparse中似乎没有一个方法给出了稀疏矩阵的最小值.特别是,我寻求最小的列.
文档中没有方法,numpy最小值不适用.如果X是稀疏矩阵,X.min()也会抛出错误:*** AttributeError: 'module' object has no attribute 'min'.
当然这必须是人们使用的东西.这是怎么做到的?
我有一个稀疏矩阵,我通过一系列复杂的计算得出,我无法在这里重现.我将尝试找到一个更简单的例子.
目前,有没有人知道如何(甚至远程)可能有一个稀疏矩阵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) 是否有优化的包或方法来估计真实,方形,非负矩阵的Perron-Frobenius特征值?这可能比精确计算明显更快(特别是对于大和/或稀疏矩阵) - 假设可以通过迭代矩阵来得到Perron-Frobenius特征值.我希望存在一个优化的包,它可以做到这一点.
即使我指定了分隔符,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)
我已经在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)