我有一个numpy数组,如:
array = [0.2, 0.3, 0.4]
Run Code Online (Sandbox Code Playgroud)
(这个矢量实际上是300k密度的大小,我只用简单的例子说明)
以及使用Scipy创建的稀疏对称矩阵,如下所示:
M = [[0, 1, 2]
[1, 0, 1]
[2, 1, 0]]
Run Code Online (Sandbox Code Playgroud)
(表示密集只是为了说明;在我的实际问题中它是一个(300k x 300k)稀疏矩阵)
是否可以将所有行乘以数组中的元素,然后对列进行相同的操作?
这将首先导致:
M = [[0 * 0.2, 1 * 0.2, 2 * 0.2]
[1 * 0.3, 0 * 0.3, 1 * 0.3]
[2 * 0.4, 1 * 0.4, 0 * 0.4]]
Run Code Online (Sandbox Code Playgroud)
(行与数组中的元素相乘)
M = [[0, 0.2, 0.4]
[0.3, 0, 0.3]
[0.8, 0.4, 0]]
Run Code Online (Sandbox Code Playgroud)
然后列成倍增加:
M = [[0 * 0.2, 0.2 * 0.3, 0.4 * 0.4]
[0.3 * 0.2, …Run Code Online (Sandbox Code Playgroud) 编译 .pyx 文件工作正常,但当我输入以下内容时突然开始出现错误:
python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
我收到错误:
c:\Python27\cython\helloworld>python setup.py build_ext --inplace
running build_ext
cythoning hello.pyx to hello.c
Traceback (most recent call last):
File "setup.py", line 8, in <module>
ext_modules = [Extension("hello", ["hello.pyx"])]
File "C:\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 163,
in run
_build_ext.build_ext.run(self)
File "C:\Python27\lib\distutils\command\build_ext.py", line 340, in run
self.build_extensions()
File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line 170,
in build_extensions
ext.sources = self.cython_sources(ext.sources, ext)
File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", …Run Code Online (Sandbox Code Playgroud) 我们刚开始将查询从Legacy迁移到Standard SQL,因此我们现在正在学习如何处理嵌套数据和数组.
基本上我们想要做的是从ga_sessions表中检索以下数据:
visitor id, session id, array of skus
visitor 1, session 1, [sku_0, sku_1, (...), sku_n]
visitor 1, session 2, [skus]
Run Code Online (Sandbox Code Playgroud)
为此,我们运行了这个简单的查询:
WITH
customers_data AS(
SELECT
fullvisitorid fv,
visitid v,
ARRAY_AGG((
SELECT
prods.productsku
FROM
UNNEST(hits.product) prods)) sku
FROM
`dataset_id.ga_sessions_*`,
UNNEST(hits) hits
WHERE
1 = 1
AND _table_suffix BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY))
--and (select count(productsku) from unnest(hits.product) where productsku is not null) = 1
GROUP BY
fv,
v
LIMIT …Run Code Online (Sandbox Code Playgroud) 我希望从Legacy SQL迁移到Standard SQL
我在Legacy SQL中有以下代码
SELECT
hits.page.pageTitle
FROM [mytable]
WHERE hits.page.pageTitle contains '%'
Run Code Online (Sandbox Code Playgroud)
我在标准SQL中尝试过这个:
SELECT
hits.page.pageTitle
FROM `mytable`
WHERE STRPOS(hits.page.pageTitle, "%")
Run Code Online (Sandbox Code Playgroud)
但它给了我这个错误:
错误:无法访问类型为ARRAY>的值[4:21]的字段页面
我们使用BigQuery Python API来运行一些分析.为此,我们创建了以下适配器:
def stream_data(self, table, data, schema, how=None):
r = self.connector.tables().list(projectId=self._project_id,
datasetId='lbanor').execute()
table_exists = [row['tableReference']['tableId'] for row in
r['tables'] if
row['tableReference']['tableId'] == table]
if table_exists:
if how == 'WRITE_TRUNCATE':
self.connector.tables().delete(projectId=self._project_id,
datasetId='lbanor',
tableId=table).execute()
body = {
'tableReference': {
'tableId': table,
'projectId': self._project_id,
'datasetId': 'lbanor'
},
'schema': schema
}
self.connector.tables().insert(projectId=(
self._project_id),
datasetId='lbanor',
body=body).execute()
else:
body = {
'tableReference': {
'tableId': table,
'projectId': self._project_id,
'datasetId': 'lbanor'
},
'schema': schema
}
self.connector.tables().insert(projectId=(
self._project_id),
datasetId='lbanor',
body=body).execute()
body = {
'rows': [
{
'json': data, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 google BigQuery 上的数据集中合并两个表
使用以下代码:
def mergeTables(workingTable, table, DATASET_ID):
query ="""
SELECT
full_name,
age
FROM {DATASET_ID}.{workingTable}
UNION DISTINCT
SELECT
full_name,
age
FROM {DATASET_ID}.{table}
LIMIT 100;
"""
df = pd.read_gbq(query, "joe-python-analytics", 'standard')
print(df)
Run Code Online (Sandbox Code Playgroud)
工作表和表是我希望与我的联合操作员合并的两个表。但是,当我运行该方法时,出现错误:
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/bigquery/v2/projects/j/queries/job_aalt=json returned "Encountered "" at line 6, column 15.
[Try using standard SQL (https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql)]">
Run Code Online (Sandbox Code Playgroud)
我已经启用了标准 sql 这似乎没有帮助?
我们如何使用新normalize函数从BigQuery中删除字符串中的变音符号,例如:
café
Run Code Online (Sandbox Code Playgroud)
造成:
cafe
Run Code Online (Sandbox Code Playgroud) 有没有理由(考虑到我没有搞砸某事)为什么在对给定数组中的前n = 1000个元素进行排序时,bottleneck.argpartsort的性能最佳?
我创建了以下脚本:
d = numpy.random.rand(300000)
l = []
for i in range(5):
to = time()
ind = argpartsort(-d, pow(10,i))
tf = time()
l.append((pow(10,i), tf - to))
Run Code Online (Sandbox Code Playgroud)
结果导致:
[(1, 0.008157968521118164),
(10, 0.006367921829223633),
(100, 0.006164073944091797),
(1000, 0.002994060516357422),
(10000, 0.004293203353881836)]
Run Code Online (Sandbox Code Playgroud)
绘制结果给出:

我认为较少的值argpartsort必须追踪它应该更快,但它不是我所观察到的.我在某个地方搞砸了还是预期的?
提前致谢!
我一直在尝试使用Tornado Framework创建一个Web服务.该系统应该处理如下URL:
IP:Port/?user=1822&catid=48&skus=AB1,FS35S,98KSU1
首先我创建了这段代码来阅读网址:
#!/usr/bin/env python
from datetime import date
import tornado.httpserver
import tornado.escape
import tornado.ioloop
import tornado.web
class WService(tornado.web.RequestHandler):
def get(self, url):
self.write("value of url: %s" %(url))
application = tornado.web.Application([
(r"/([^/]+)", WService)])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(9000)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
并输入网址:
IP:Port/hello_world
导致:
value of url: hello_world
除了"?"之外,URL中使用的任何字符都有效.更改代码时,例如:
application = tornado.web.Application([
(r"/?([^/]+)", WService)])
Run Code Online (Sandbox Code Playgroud)
并将网址发送到"?" mark(IP:Port/?hello_world)结果是:
404: Not Found
研究龙卷风来解决这个问题我发现了这个get_argument方法并尝试应用它,例如:
class WService2(tornado.web.RequestHandler):
def get(self):
user = self.get_argument('user', None)
respose = { 'user': user }
self.write(response) …Run Code Online (Sandbox Code Playgroud) 我有JSON数据,它以字符串形式保存在BigQuery中。
{
"event":{
"action":"prohibitedSoftwareCheckResult",
"clientTime":"2017-07-16T12:55:40.828Z",
"clientTimeZone":"3",
"serverTime":"2017-07-16T12:55:39.000Z",
"processList":{
"1":"outlook.exe",
"2":"notepad.exe"
}
},
"user":{
"id":123456,
}
}
Run Code Online (Sandbox Code Playgroud)
我想要一个结果集,其中每个进程将在不同的行中。就像是:
UserID ProcessName
-------------------------
123456 outlook.exe
123456 notepad.exe
Run Code Online (Sandbox Code Playgroud)
我看到有一个查询重复数据的选项,但据我所知,该字段必须为RECORD类型。
是否可以在子查询中“即时”转换为RECORD类型?(我无法将源字段更改为RECORD)。
还是有其他方法返回期望的结果集?
我在查询时遇到问题hits.product.customDimensions(相同的逻辑在 上正确工作hits.customDimensions)。我不明白为什么额外的嵌套会导致数组错误。任何帮助表示赞赏。谢谢你!
标准SQL
SELECT
fullVisitorId,
visitId,
hits.hitNumber,
product.productSKU,
MAX(IF(c.index=1,c.value, null)) AS customDimesion1
FROM 17823880.ga_sessions_20180128,
UNNEST(hits) AS hits,
UNNEST(hits.product) as product,
UNNEST(hits.product.customDimensions) as c
GROUP BY 1, 2, 3, 4
Run Code Online (Sandbox Code Playgroud)
错误:
无法在 [11:23] 访问类型为 ARRAY> 的值上的字段 customDimensions
标准 SQL - 此查询运行时不会出现以下错误
SELECT
fullVisitorId,
visitId,
hits.hitNumber,
MAX(IF(c.index=1,c.value, null)) AS customDimesion1
FROM 17823880.ga_sessions_20180128,
UNNEST(hits) AS hits,
UNNEST(hits.customDimensions) as c
GROUP BY 1, 2, 3
Run Code Online (Sandbox Code Playgroud)