我最近尝试在我的系统上安装Python 3.4作为替代安装,试图在迁移代码之前熟悉自己.我的主要Python安装是2.7.6.
我尝试了Windows的64位安装程序,但它出现了一条错误消息
此Windows Installer程序包存在问题.作为设置的一部分运行的程序没有按预期完成.请联系您的支持人员或包装供应商.
在此之后安装回滚(从下面显示的点):

我最终找到了下面发布的解决方案,并决定分享以防其他人遇到同样的问题.
我正在寻找一个Python函数(或编写我自己的函数,如果没有一个)来获取t统计量,以便在置信区间计算中使用.
我已经找到了表格,可以像这样给出各种概率/自由度的答案,但我希望能够针对任何给定的概率计算出这个.对于那些不熟悉这种自由度的人来说,样本-1中的数据点数(n)和顶部列标题的数字是概率(p),例如,如果使用0.05的双尾显着性水平,则使用0.05你正在查找用于计算95分置信度的t分数,如果你重复n次测试,结果将落在平均值+/-置信区间内.
我已经研究过在scipy.stats中使用各种函数,但是我看不到任何函数似乎允许我上面描述的简单输入.
Excel有一个简单的实现,例如获得1000的样本的t分数,我需要95%的信心我会使用:=TINV(0.05,999)得到分数~1.96
这是我到目前为止用于实现置信区间的代码,因为你可以看到我正在使用一种非常粗略的方法来获得目前的t分数(只是为perc_conf允许一些值并警告它不准确样本<1000):
# -*- coding: utf-8 -*-
from __future__ import division
import math
def mean(lst):
# ? = 1/N ?(xi)
return sum(lst) / float(len(lst))
def variance(lst):
"""
Uses standard variance formula (sum of each (data point - mean) squared)
all divided by number of data points
"""
# ?² = 1/N ?((xi-?)²)
mu = mean(lst)
return 1.0/len(lst) * sum([(i-mu)**2 for i in lst])
def conf_int(lst, perc_conf=95):
"""
Confidence interval - given a list …Run Code Online (Sandbox Code Playgroud) 最近几天,我一直在帮朋友学习Javascript.这是他多年来的第一语言,他几乎没有记得,所以他几乎从头开始.他一直在做一个简单的教程,我一直在为他提供一些练习来帮助他练习.我给他的最近一次练习是(显然)经典的FizzBuzz问题.他通过一些帮助解决了这个问题,但在制定解决方案时他做了一些非常有趣的事情.他想出了以下代码:
for (var x = 1; x <= 100; x++) {
if (x%3 == 0, x%5 != 0) {
console.log("Fizz");
}
else if (x%3 != 0, x%5 == 0) {
console.log("Buzz");
}
else if (x%3 == 0, x%5 == 0) {
console.log("FizzBuzz");
}
else {
console.log(x);
}
}
Run Code Online (Sandbox Code Playgroud)
他不熟悉布尔比较运算符,因此他没有使用&&而是使用逗号.我的期望是它会崩溃并说一些关于语法错误的信息,但令我惊讶的是它最终运行良好并打印出一堆"Fizz"和"Buzz"行,没有"FizzBuzz"或数字.不用说,我很困惑,所以我做了一些实验.我的第一个测试是运行这个:
if (true, true) console.log('true, true');
if (true, false) console.log('true, false');
if (false, true) console.log('false, true');
if (false, false) console.log('false, false');
Run Code Online (Sandbox Code Playgroud)
这给了我两行输出:
'true, true'
'false, true'
Run Code Online (Sandbox Code Playgroud)
从那以后,我猜测所有逗号都是因为它只评估列表中的最后一个表达式.然后我尝试运行此代码:
for …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我正在做的课程安装一个名为QSTK的软件包.该课程指向32位版本的安装包,但我安装了64位Python.我在Python包索引上找到了一个.egg文件.
它似乎有一个32位的exe,但只有64位的.egg.我下载了QSTK-0.2.6-py2.7.egg版本,并且到目前为止一直试图安装这个版本.
这是我尝试过的:
使用简单安装(从C:\ Python27\Lib\site-packages目录):
Python easy_install -Z C:\Users\Prosserc\Downloads\QSTK-0.2.6-py2.7.egg
Run Code Online (Sandbox Code Playgroud)
这在我的site-packages目录中创建了一个QSTK-0.2.6-py2.7.egg目录,我可以打开并查找文件.但是,我试图从python shell导入QSTK并得到通常的"No module"命名..."导入错误.
我查找了一个setup.py文件,因为我之前使用过这些文件来安装软件包,但找不到一个.
我还查看了这个线程,其中提供了安装.egg文件的详细信息,但没有使用简单的安装,但无法弄清楚我需要对提供的脚本进行哪些更改,因为这是安装我已经拥有的特定包.
如果有人可以通过解释我如何正确安装此.egg文件或通过提供另一种格式的python 2.7 64位QSTK模块的链接来提供帮助,我们将不胜感激.
我已经成功安装了QSTK依赖的软件包(numpy,scipy,matplotlib,pandas,python-dateutil和scikit-learn).
我有一个 Python 类型的别名:
from typing import Tuple, Dict, Union
SelectedModelArgs = Dict[
str,
Union[
str,
float,
Tuple[float, float],
Dict[str, Union[str, float, Tuple[float, float]]],
],
]
Run Code Online (Sandbox Code Playgroud)
目前,这允许使用 str 到 str、float、float 元组或相同类型的嵌套字典的字典。有没有办法递归地定义它以允许任意嵌套?
例如
SelectedModelArgs = Dict[
str,
Union[
str,
float,
Tuple[float, float],
SelectedModelArgs,
],
]
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我收到 IDE 错误:
添加from __future__ import annotations到文件顶部并不能解决这些问题(就像在类定义中使用类名一样)。
我还尝试使用上面的代码示例,但将其嵌套"SelectedModelArgs"为字符串(如本答案中所述)。这可以解决 pylance 错误,但不能解决 mypy 错误。
基本上它几乎适用于除了0.93之外我尝试过的几乎所有情况.然后我在while循环中添加了"print money"以查看每次循环后它正在做什么,这就是发生的事情:
Enter an amount less than a dollar: 0.93
0.68
0.43
0.18
0.08
0.03
0.02
0.01
3.81639164715e-17
-0.01
Your change is 3 quarters 1 dimes 1 nickels 4 pennies
Run Code Online (Sandbox Code Playgroud)
有人能解释一下到底是怎么回事吗?
money = input("Enter an amount less than a dollar: ")
quarter = 0
dime = 0
nickel = 0
penny = 0
while money > 0.00:
if money >= 0.25:
quarter = quarter + 1
money = money - 0.25
elif money >= 0.10:
dime = dime+1
money = …Run Code Online (Sandbox Code Playgroud) python ×4
python-2.7 ×2
javascript ×1
mypy ×1
packages ×1
pip ×1
python-3.4 ×1
python-3.x ×1
qstk ×1
statistics ×1
syntax ×1
type-hinting ×1
windows64 ×1