Stack Overflow 上也有类似的问题,但没有一个像我的问题,我还想仔细检查一下我是否以最有效的方式(资源方面)做到这一点。
我有已提交的调查,我想统计结果。每个调查都保存在多维数组中,如下所示:
Array ( [name] => Clark Kent [rating] => 5 )
这些来自循环,因为它们是单独的数据库条目。
因此,我首先创建一个新数组,将所有这些组合起来:
$mods = array();
$index = -1;
foreach($fields as $field) {
$index++;
$mods[$index]['name'] = $field['name'];
$mods[$index]['rating'] = $field['rating'];
}
Run Code Online (Sandbox Code Playgroud)
然后我将它们分组,以便同名的所有评分都在一起,以便稍后我可以对它们进行求和。
$groups = array();
foreach ($mods as $value) {
$groups[$value['name']][] = $value;
}
Run Code Online (Sandbox Code Playgroud)
这会产生以下结果:
Array (
[Clark Kent] => Array (
[0] => Array (
[name] => Clark Kent
[rating] => 5
)
[1] => Array (
[name] => Clark Kent
[rating] => 5
)
) …Run Code Online (Sandbox Code Playgroud) 我有 OHLCV 数据的数据框。我想知道是否有人知道任何教程或任何使用 pandas 查找 ADX(平均方向运动)的方法?
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
import datetime as dt
import numpy as nm
start=dt.datetime.today()-dt.timedelta(59)
end=dt.datetime.today()
df=pd.DataFrame(yf.download("MSFT", start=start, end=end))
Run Code Online (Sandbox Code Playgroud)
平均方向指数(ADX)是由 J. Welles Wilder, Jr. 开发的构成技术交易系统的五个指标中的主要技术指标,并使用构成交易系统的其他指标进行计算。ADX 主要用作动量或趋势强度指标,但整个 ADX 系统也用作方向指标。
方向运动是通过比较两个连续低点之间的差异与其各自高点之间的差异来计算的。
对于 ADX 的 Excel 计算,这是一个非常好的视频:
所以,我认为这相当简单,但我搞砸了一些事情。
我有疑问
SELECT AVG(price), food_type
FROM instructor
GROUP BY food_type
Run Code Online (Sandbox Code Playgroud)
产生这个:
Price | food_type |
2.25 | Drink |
1.50 | Candy |
3 | Soup |
Run Code Online (Sandbox Code Playgroud)
我正在尝试退回所有超过 2 美元的价格
所以我想要:
Price | food_type |
2.25 | Drink |
3 | Soup |
Run Code Online (Sandbox Code Playgroud)
看起来应该很简单
SELECT AVG(price), food_type
FROM instructor
WHERE AVG(price) > 2
GROUP BY food_type
Run Code Online (Sandbox Code Playgroud)
但我无法让它发挥作用。
我究竟做错了什么?
如何使用 jq 计算数组的中位数 (P50)?jq手册描述了如何计算平均值,但我想得到中位数。
算法:给定一个数字列表,对其进行排序。如果条目数为奇数,则选择中间的条目。如果有偶数个条目,则计算中间两个的平均值。
例子:
echo '[1,5,9,3]' | jq <ANSWER> # should output 4, since it's the mean of 3 and 5
echo '[1,9,2]' | jq <ANSWER> # should output 2, since it's the middle element
echo '[]' | jq <ANSWER> # undefined
Run Code Online (Sandbox Code Playgroud) df:
A B C D
1 2 3 la
0 1 -1 na
Run Code Online (Sandbox Code Playgroud)
如何找到这样的每一行的平均值?:
A B C D mean
1 2 3 la 2
0 1 -1 na 0
Run Code Online (Sandbox Code Playgroud)
我尝试过,但情况并非如此(:
some_col = [A,B,C]
for col in some_col:
df['mean'] = [np.mean([x, y]) for x, y in zip(df[col], df['mean'])]
Run Code Online (Sandbox Code Playgroud) 我有在 BenchmarkDotnet 上测试的代码..
然后我发现有些不对劲..
我的项目版本是
C# 11.0 .NET 7.0 Nuget 包 BenchMarkDotnet 0.13.5
ReadOnlyMemory<float> readOnlyFloats;
ReadOnlyMemory<double> readOnlyDoubles;
[GlobalSetup]
public void Setup()
{
var rand = new Random();
var floats = Enumerable.Range(0, ArrayLength).Select(a => rand.NextSingle()).ToArray();
var doubles = Enumerable.Range(0, ArrayLength).Select(a => rand.NextDouble()).ToArray();
readOnlyFloats = floats;
readOnlyDoubles = doubles;
}
[Benchmark]
public double Calc_WaveStatistic_Sum()
{
return readOnlyFloats.Span.Sum();
}
[Benchmark]
public double Calc_WaveStatistic_Sum_Double()
{
return readOnlyDoubles.Span.Sum();
}
[Benchmark]
public double Calc_WaveStatistic_Avg()
{
return readOnlyFloats.Span.Avg();
}
[Benchmark]
public double Calc_WaveStatistic_Avg_Double()
{
return readOnlyDoubles.Span.Avg();
} …Run Code Online (Sandbox Code Playgroud) 这可能非常简单,但我的尝试(由Intellisense和MSDN指导)都是不合适的.
如果我有一个包含3个double的类,我怎样才能得到这些列表的平均值?
class DataPoint
{
public int time;
public int X;
public int Y;
public int Z;
// Constructor omitted
}
class Main
{
List<DataPoint> points = new List<DataPoint>();
// Populate list
DataPoint averagePoint = points.Average(someMagicHere);
}
Run Code Online (Sandbox Code Playgroud)
我想averagePoint遏制time,x,y和z值是组成列表中元素的这些属性的平均值.我该怎么做呢?我正在努力的一点是(我认为)someMagicHere,但我可能完全使用错误的方法开始.
所以我有一个.wav文件.从这里我得到了数据:正如预期的声音文件它是立体声所以数据看起来像
[[1,2],[2,3],[4,9],[1,5],[1,7],....]
注意:我刚刚编写了这些数字,但重点是它是一个嵌套列表.这里的问题是我正在做FFT,因此我想只使用两个通道的平均值,所以我想:
[[1.5],[2.5],[6.5],[3],[4],....]
所以我这样做了:
averaged_array = [sum(x)/len(x) for x in original_list]
Run Code Online (Sandbox Code Playgroud)
我假设len(x)是一个恒定时间操作,即使它总是2.
这里的问题是我相信原始列表的长度> 900,000.在我的家用电脑上,我可以在~46秒内平均一次.在我需要用于演示的计算机上需要约121秒.这是一个相当大的增长,坦率地说,它必须在它运行时等待.无论如何,我可以优化它,以便减少它所需的时间吗?
注意:我相信这是一台双核计算机,所以我不能并行运行(我想?).我可以ssh到服务器(运行一些i7),我已被允许使用..如果我以某种方式ssh'ed并在那里进行计算会更好吗?我正在使用的原始计算机是~2 ghz,但是是一个古老的戴尔模型亲戚(几年前的系列).此外,迈克菲和另一个进程也消耗了约50%的处理,我没有权利杀死这些.
如果我这样做:
在一行常见图表中:http://jsfiddle.net/yuKwp/
如何在所选元素上获得xAxis的平均值?
在上面的例子中,我只能访问图的最小值和最大值,但不能访问inbetweeen值和最小点选择值.
所以,如果我有1,2,3,4,5并且我从2到4中选择点,我想要一个[2,3,4]的数组,其平均值为(2 + 3 + 4)/ 3 .
有没有办法获得至少min和max xAxis值的索引数组?
提前致谢.
我在平均显示小数时遇到问题.它一直显示.00或.1.我试图把它放在一起,但我仍然得到相同的结果.另外,我想包括我输入的第一个整数,但我不知道如何.请帮助:
import java.io.*;
import java.util.*;
public class WhileSentinelSum
{
static final int SENTINEL= -999;
public static void main(String[] args)
{
// Keyboard Initialization
Scanner kbin = new Scanner(System.in);
//Variable Initialization and Declaration
int number, counter;
int sum =0;
int average;
//Input
System.out.print("Enter an integer number: " );
number = kbin.nextInt();
counter=0;
//Processing
//Output
while(number != SENTINEL)
{
counter++;
System.out.print("Enter an integer number: ");
number = kbin.nextInt();
sum += number;
}
if (counter !=0)
System.out.println("\nCounter is: " + counter);
else
System.out.println("no …Run Code Online (Sandbox Code Playgroud)