小编Arg*_*ens的帖子

在Mathematica中使用MapAt中的All

我经常有一对配对列表,如

data = {{0,0.0},{1,12.4},{2,14.6},{3,25.1}}
Run Code Online (Sandbox Code Playgroud)

我想做一些事情,例如Rescale,对所有第二个元素做一些事情而不触及第一个元素.我知道的最好方法是:

Transpose[MapAt[Rescale, Transpose[data], 2]]
Run Code Online (Sandbox Code Playgroud)

必须有一种方法可以在没有这么多的情况下做到这一点Transpose.我的愿望是这样的事情起作用:

MapAt[Rescale, data, {All, 2}]
Run Code Online (Sandbox Code Playgroud)

但我的理解是MapAt采用Position风格规范而不是Part风格规范.什么是正确的解决方案?

澄清,

我正在寻求一个解决方案,我不必重复自己,所以缺少双重Transpose或双重[[All,2]],因为我认为重复是一个信号,我没有做最简单的事情.但是,如果消除重复需要引入中间变量或命名函数或其他额外的复杂性,则转置/非转置解决方案可能已经正确.

wolfram-mathematica

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

使用PatternSequence和Mathematica中的Case来查找峰值

给定坐标对

data = {{1, 0}, {2, 0}, {3, 1}, {4, 2}, {5, 1}, 
        {6, 2}, {7, 3}, {8, 4}, {9, 3}, {10, 2}}
Run Code Online (Sandbox Code Playgroud)

我想提取山峰和山谷,因此:

{{4, 2}, {5, 1}, {8, 4}}
Run Code Online (Sandbox Code Playgroud)

我目前的解决方案是这种笨拙:

Cases[
 Partition[data, 3, 1],
 {{ta_, a_}, {tb_, b_}, {tc_, c_}} /; Or[a < b > c, a > b < c] :> {tb, b}
]
Run Code Online (Sandbox Code Playgroud)

您可以看到,通过使用三倍大小的数据集开始Partition.我认为可以使用CasesPatternSequence提取这些信息,但这种尝试不起作用:

Cases[
 data,
 ({___, PatternSequence[{_, a_}, {t_, b_}, {_, c_}], ___} 
         /; Or[a < b > c, a …
Run Code Online (Sandbox Code Playgroud)

design-patterns wolfram-mathematica

5
推荐指数
2
解决办法
1061
查看次数

在Mathematica中查找类似但不相同的元素

我有一个数字列表.我想从列表中提取出一些属于某些波段并具有一些最小长度的数字.例如,假设我想在此列表上操作:

thisList = {-1.2, -1.8, 1.5, -0.6, -0.8, -0.1, 1.4, -0.3, -0.1, -0.7}
Run Code Online (Sandbox Code Playgroud)

band=1runLength=3.我想拥有

{{-0.6, -0.8, -0.1}, {-0.3, -0.1, -0.7}}
Run Code Online (Sandbox Code Playgroud)

作为结果.现在我正在使用

Cases[
 Partition[thisList,runLength,1],
 x_ /; Abs[Max[x] - Min[x]] < band
]
Run Code Online (Sandbox Code Playgroud)

主要问题是运行重叠的地方,我得到了许多运行副本.例如,使用

thisList = {-1.2, -1.8, 1.5, -0.6, -0.8, -0.1, -0.5, -0.3, -0.1, -0.7}
Run Code Online (Sandbox Code Playgroud)

给我

{{-0.6, -0.8, -0.1}, {-0.8, -0.1, -0.5}, {-0.1, -0.5, -0.3}, {-0.5, -0.3, -0.1}, {-0.3, -0.1, -0.7}}
Run Code Online (Sandbox Code Playgroud)

我宁愿拥有的地方

{-0.6, -0.8, -0.1, -0.5, -0.3, -0.1, -0.7}
Run Code Online (Sandbox Code Playgroud)

没有做一些重复结果的减少.什么是正确的方法?如果它不涉及使用爆炸数据,那就太好了Partition.

wolfram-mathematica

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

在mySQL中选择不同三元组的补充

我有这两个表

test_table
date        student     test
2012-05-31  Alice       Math
2012-05-31  Alice       Math
2012-05-31  Bob         Math
2012-05-31  Bob         Spelling
2012-06-01  Alice       Math
2012-06-01  Alice       Spelling

score_table
date        student     test        best_daily_score
2012-05-31  Alice       Math        90
2012-05-31  Bob         Math        50
2012-05-31  Bob         Spelling    50
2012-06-01  Alice       Math        95
Run Code Online (Sandbox Code Playgroud)

我想检测Alice的best_daily_scoreSpelling上测试2012-06-01没有记录呢.我正在寻找返回的查询

2012-06-01  Alice       Spelling
Run Code Online (Sandbox Code Playgroud)

这是唯一的一排

SELECT DISTINCT date, student, test FROM test_table
Run Code Online (Sandbox Code Playgroud)

那不是

SELECT DISTINCT date, student, test FROM score_table
Run Code Online (Sandbox Code Playgroud)

这不起作用:

SELECT DISTINCT date, student, test FROM test_table WHERE date, …
Run Code Online (Sandbox Code Playgroud)

mysql sql database

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

在不安装 MySQL 的情况下使用 Python 查询 MySQL 数据库

我想使用 Python 查询 MySQL 数据库,但显然 MySQLdb 包需要单独安装一个巨大的 MySQL 工具链。

如何使用 Python 脚本查询 MySQL 数据库,而无需安装一堆不必要的 MySQL 东西,包括在客户端计算机上授予 MySQL 服务器功能?

我不喜欢 Perl,但 DBI 包似乎允许 Perl 脚本与 MySQL 交互,而无需包外部的任何 MySQL 内容。我正在为Python寻找类似的东西。

python mysql database

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