小编man*_*anu的帖子

使用jq匹配字段名称的模式

这是一个非常基本的(可能是愚蠢的)问题,但我无法让它发挥作用......

我有一个这种结构的json文件

{                                                                                                                                                                                                                                              
    "data": {
        "what a burger": [1,2,3],
        "wap": [66],
        "the map": [11,20],
        "H. Incandenza": [1,1],
        "What a burger": [a,a,3]
    }
}
Run Code Online (Sandbox Code Playgroud)

我想提取"name"与某个模式匹配的数据中的字段值.例如,我想提取所有不区分大小写的"汉堡"的巧合

[1,2,3],[α,α,3]

我的猜测是这样的

jq '.data | match("what a burger";"i")'
Run Code Online (Sandbox Code Playgroud)

但这会导致

jq: error (at <stdin>:9): object ({"what a bu...) cannot be matched, as it is not a string
Run Code Online (Sandbox Code Playgroud)

干杯.

regex json key match jq

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

使用带索引的数据框在Bokeh中进行TimeSeries

我正在尝试使用Bokeh绘制一个包含年份和数字列的Pandas数据框DateTime.如果DateTime指定为x,则行为是预期的(x轴上的年份).但是,如果我用set_index打开DateTime列入数据帧的指数,那么只有指定yTimeSeries在x轴毫秒我得到的时间.一个最小的例子

import pandas as pd
import numpy as np
from bokeh.charts import TimeSeries, output_file, show

output_file('fig.html')
test = pd.DataFrame({'datetime':pd.date_range('1/1/1880', periods=2000),'foo':np.arange(2000)})
fig = TimeSeries(test,x='datetime',y='foo')
show(fig)

output_file('fig2.html')
test = test.set_index('datetime')
fig2 = TimeSeries(test,y='foo')
show(fig2)
Run Code Online (Sandbox Code Playgroud)

这是预期的行为还是错误?我希望两种方法都有相同的图片.

干杯!!

python time-series pandas bokeh

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

nbdev 和“协程”对象不可下标

我最近更新了我的一个“旧”项目的 nbdev 版本(我创建了一个新的 conda 环境),现在 github 中的自动测试(构建的“运行测试”部分)失败了

'coroutine' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

每个笔记本的错误,这似乎与我的代码完全无关。还有一些

RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Run Code Online (Sandbox Code Playgroud)

RuntimeWarning: coroutine 'ZMQSocketChannel.get_msg' was never awaited
Run Code Online (Sandbox Code Playgroud)

当我在nbdev_test_nbs本地运行时,这些都不会发生。

有什么线索吗?

python jupyter-notebook nbconvert

8
推荐指数
1
解决办法
411
查看次数

Python中的典型相关分析与sklearn

我正在尝试使用sklearn进行典型相关分析(CCA).我将从手册中包含的简单示例开始:

from sklearn.cross_decomposition import CCA
X = [[0., 0., 1.], [1.,0.,0.], [2.,2.,2.], [3.,5.,4.]]
Y = [[0.1, -0.2], [0.9, 1.1], [6.2, 5.9], [11.9, 12.3]]
cca = CCA(n_components=1)
cca.fit(X, Y)

X_c, Y_c = cca.transform(X, Y)
Run Code Online (Sandbox Code Playgroud)

据我所知,在cca.x_weights_中我得到了"规范系数",即原始X变量的线性组合(MATLAB返回的矩阵"A"和"B"的列).然而,"规范相关"在哪里,即应用由规范系数给出的变换时达到的最大相关性(即,MATLAB返回的矢量"r").是否有可能在Python中得到它?

python matlab correlation scikit-learn

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

压缩文件在h5py中更大

我正在使用h5py从python中保存HDF5格式的numpy数组.最近,我试图应用压缩,我得到的文件的大小更大......

我从事物(每个文件都有几个数据集)就像这样

self._h5_current_frame.create_dataset(
        'estimated position', shape=estimated_pos.shape, 
         dtype=float, data=estimated_pos)
Run Code Online (Sandbox Code Playgroud)

这样的事情

self._h5_current_frame.create_dataset(
        'estimated position', shape=estimated_pos.shape, dtype=float,
        data=estimated_pos, compression="gzip", compression_opts=9)
Run Code Online (Sandbox Code Playgroud)

在特定示例中,压缩文件的大小是172K,未压缩文件的大小是72K(并且h5diff报告两个文件相等).我尝试了一个更基本的例子,它按预期工作......但不是在我的程序中.

怎么可能?我不认为gzip算法会提供更大的压缩文件,因此它可能与h5py及其使用有关: - /任何想法?

干杯!!

编辑:

看到输出后h5stat,似乎压缩版本节省了大量元数据(在输出的最后几行)

压缩文件

Filename: res_totolaca_jue_2015-10-08_17:06:30_19387.hdf5
File information
    # of unique groups: 21
    # of unique datasets: 56
    # of unique named datatypes: 0
    # of unique links: 0
    # of unique other: 0
    Max. # of links to object: 1
    Max. # of objects in group: 5
File space information for file metadata (in bytes):
    Superblock …
Run Code Online (Sandbox Code Playgroud)

python compression numpy hdf5 h5py

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

.loc 用于 Pandas 中的 CategoricalIndex

我正在尝试使用 .loc 访问基于 CategoricalIndex 的 Pandas 数据框的行,但我得到了一个TypeError. 一个最小的工作示例是

import pandas as pd

df = pd.DataFrame({'foo': rand(3), 'future_index': [22, 13, 87]})
df['future_index'] = df['future_index'].astype('category')
df = df.set_index('future_index')
Run Code Online (Sandbox Code Playgroud)

然后,在尝试访问与标签 13 对应的行时

df.loc[13]
Run Code Online (Sandbox Code Playgroud)

我得到

TypeError: cannot do label indexing on <class 'pandas.core.indexes.category.CategoricalIndex'> with these indexers [13] of <class 'int'>
Run Code Online (Sandbox Code Playgroud)

尽管

13 in df.index
Run Code Online (Sandbox Code Playgroud)

正在True。我知道我最终可以获得 13 的索引

df.index.get_loc(13)
Run Code Online (Sandbox Code Playgroud)

但是,为什么上述更简单的方法不起作用?我错过了什么?

干杯。

python pandas

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

Numba jit 和延迟类型

我正在传递 numba 作为我的函数的签名

@numba.jit(numba.types.UniTuple(numba.float64[:, :], 2)(
    numba.float64[:, :], numba.float64[:, :], numba.float64[:, :], 
earth_model_type))
Run Code Online (Sandbox Code Playgroud)

其中earth_model_type定义为

earth_model_type = numba.deferred_type()
earth_model_type.define(em.EarthModel.class_type.instance_type)
Run Code Online (Sandbox Code Playgroud)

它编译得很好,但是当我尝试调用该函数时,我得到了

*** TypeError: 没有匹配的参数类型定义数组(float64, 2d, F), array(float64, 2d, C), array(float64, 2d, F), instance.jitclass.EarthModel#7fd9c48dd668

具有不匹配定义的参数类型在我看来与上面的类型几乎相同。另一方面,如果我不通过 using 指定签名@numba.jit(nopython=True),它工作正常并且由 numba 编译的函数的签名是

ipdb> numbed_cowell_propagator_propagate.signatures                   
Run Code Online (Sandbox Code Playgroud)

[(array(float64, 2d, F), array(float64, 2d, C), array(float64, 2d, F), instance.jitclass.EarthModel#7f81bbc0e780)]

编辑

如果我使用常见问题解答中的方式强制执行 C 顺序数组,我仍然会收到错误

类型错误:没有匹配的参数类型定义数组(float64, 2d, C), array(float64, 2d, C), array(float64, 2d, C), instance.jitclass.EarthModel#7f6edd8d57b8

我很确定问题与延迟类型有关,因为如果不是传递 jit 类,而是传递该类所需的所有属性(4numba.float64秒),它工作正常。

指定签名时我做错了什么?

干杯。

python numba

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

重新缩放四开图中的图形

我正在使用四开来准备一些幻灯片(即,revealjs输出),但我找不到缩放嵌入图像的方法(例如,来自维基百科)。看来“宽度”参数应该可以,但百分比都不是

![](https://upload.wikimedia.org/wikipedia/commons/a/a4/Discharging_capacitor.svg){width="50%"}
Run Code Online (Sandbox Code Playgroud)

也不是绝对值

![](https://upload.wikimedia.org/wikipedia/commons/a/a4/Discharging_capacitor.svg){width=600}
Run Code Online (Sandbox Code Playgroud)

似乎对渲染的图片有任何影响。有什么线索吗?

干杯。

reveal.js quarto

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

将一列字符串转换为Pandas中的整数列

我正在尝试将一列字符串转换为整数标识符......我无法在pandas(或python)中找到一种优雅的方法.在下面的例子中,我通过映射将"A"(字符串的列/变量)转换为数字,但对我来说它看起来像一个脏的黑客

import pandas as pd                                                                             
import numpy as np

df = pd.DataFrame({'A': ['homer_simpson', 'mean_street', 'homer_simpson', 'bla_bla'], 'B': 4})

unique = df['A'].unique()
mapping = dict(zip(unique, np.arange(len(unique))))

new_df = df.replace({'A': mapping})
Run Code Online (Sandbox Code Playgroud)

是否有更好,更直接的方法来实现这一目标?

python pandas

4
推荐指数
1
解决办法
125
查看次数