我正在使用python 3.6.1,我想读取电子邮件文件(.eml)进行处理。我正在使用emaildata 0.3.4软件包,但是,每当我尝试如文档中那样导入Text类时,都会收到模块错误:
import email
from email.text import Text
>>> ModuleNotFoundError: No module named 'cStringIO'
Run Code Online (Sandbox Code Playgroud)
当我尝试使用此更新进行更正时,出现下一个与mimetools
>>> ModuleNotFoundError: No module named 'mimetools'
Run Code Online (Sandbox Code Playgroud)
是否可以使用带有Python 3.6的emaildata 0.3.4来解析.eml文件?还是可以使用其他软件包来解析.eml文件?谢谢
我有一个数据框df
user timestamp amount
us67 15:59:07 87
us90 17:12:19 10
us12 03:23:16 17
print(df.timestamp[0])
>>> datetime.time(15,59,7)
Run Code Online (Sandbox Code Playgroud)
我想将所有时间分成 1 小时间隔,因此总共 24 个间隔。但是,我得到了TypeError
df['timestamp'] = pd.cut(x=df['timestamp'], bins=24)
>>> TypeError: unsupported operand type(s) for +: 'datetime.time' and 'float'
Run Code Online (Sandbox Code Playgroud)
但是,如果日期包含在列中,该方法确实有效timestamp,但我想忽略日期并只保留时间(用于稍后绘制):
user timestamp amount
us67 2018-04-29 15:59:07.455 87
us90 2018-04-29 17:12:19.128 10
us12 2018-04-29 03:23:16.890 17
print(df.timestamo[0])
>>> Timestamp('2018-04-29 15:59:07.455000')
df['timestamp'] = pd.cut(x=df['timestamp'], bins=24)
Run Code Online (Sandbox Code Playgroud)
使用上面的格式timestamp,可以进行分箱。但是我不希望时间戳或间隔中包含年份和日期。我只想关注一天中的某个时间。
有没有办法timestamp只使用一天中的某个时间进行垃圾箱?最终的目标是仅使用一天中的小时而不是日期来绘制df( timestampvs. amount) 的时间序列 - 因此,如果有更好的方法可以做到这一点,请提出建议。
我遇到一个问题,尽管我在不同的计算机上都获得了不同的随机数
scipy.__version__ == '1.2.1' 在所有计算机上numpy.__version__ == '1.15.4' 在所有计算机上random_state 每个函数调用中将种子固定为相同的数字(42),该函数生成随机数以产生可重复的结果在这里完整地发布代码有点复杂,但是我注意到从多元正态采样时,结果开始出现差异:
import numpy as np
from scipy import stats
seed = 42
n_sim = 1000000
d = corr_mat.shape[0] # corr_mat is a 15x15 correlation matrix, numpy.ndarray
# results diverge from here across different hardware
z = stats.multivariate_normal(mean=np.zeros(d), cov=corr_mat).rvs(n_sim, random_state=seed)
Run Code Online (Sandbox Code Playgroud)
corr_mat 是一个相关矩阵(请参阅下面的附录),并且在所有计算机上都相同。
我们正在测试的两台不同的计算机是
我有一些代码使用MCMC对后验分布进行采样,特别是Metropolis Hastings.我使用scipy生成随机样本:
import numpy as np
from scipy import stats
def get_samples(n):
"""
Generate and return a randomly sampled posterior.
For simplicity, Prior is fixed as Beta(a=2,b=5), Likelihood is fixed as Normal(0,2)
:type n: int
:param n: number of iterations
:rtype: numpy.ndarray
"""
x_t = stats.uniform(0,1).rvs() # initial value
posterior = np.zeros((n,))
for t in range(n):
x_prime = stats.norm(loc=x_t).rvs() # candidate
p1 = stats.beta(a=2,b=5).pdf(x_prime)*stats.norm(loc=0,scale=2).pdf(x_prime) # prior * likelihood
p2 = stats.beta(a=2,b=5).pdf(x_t)*stats.norm(loc=0,scale=2).pdf(x_t) # prior * likelihood
alpha = p1/p2 …Run Code Online (Sandbox Code Playgroud) 我有一个元组列表列表 list1
list1 = [[('a',0.01),('b',0.23),('c',1e-7)],
[('a',0.91),('b',0.067),('c',0.38)]]
Run Code Online (Sandbox Code Playgroud)
我想创建一个numpy矩阵,其中每一行都是元组的第二个值list1.因此矩阵,我们称之为A,将形成
A = [[0.01,0.23,1e-7],[0.91,0.067,0.38]]
A.shape
>>> (2,3)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经设法以缓慢而低效的方式实现这一目标
A = []
for i in range(len(list1)):
A.append(np.array([v for k,v in list1[i]]))
A = np.array(A)
Run Code Online (Sandbox Code Playgroud)
如何使用列表理解来完成此操作?
我刚刚使用conda安装了pyspark 2.2.0(在windows 7 64位上使用python v3.6,java v1.8)
$conda install pyspark
Run Code Online (Sandbox Code Playgroud)
它下载并似乎安装正确,没有错误。现在,当我pyspark在命令行上运行时,它只是告诉我“系统找不到指定的路径”。
$pyspark
The system cannot find the path specified.
The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)
我尝试将 pyspark 路径目录包含在我的 PATH 环境变量中,但这似乎仍然不起作用,但也许我给出了错误的路径?任何人都可以请建议。Java路径需要在PATH环境变量中指定吗?谢谢
我正在使用 openAI 的stable-baselines训练强化学习代理。我还使用optuna优化代理超参数。
为了加快该过程,我在不同的函数调用中使用多重处理。具体参见SubprocVecEnv此处文档study.optimize中的建议(分别在 1.15.3 和 1.10.4 下)。
import numpy as np
from stable_baselines.common.vec_env import SubprocVecEnv
from stable_baselines import PPO2
from stable_baselines.common.policies import MlpLnLstmPolicy
import optuna
n_cpu = 4
def optimize_ppo2(trial):
""" Learning hyperparamters we want to optimise"""
return {
'n_steps': int(trial.suggest_loguniform('n_steps', 16, 2048)),
'gamma': trial.suggest_loguniform('gamma', 0.9, 0.9999),
'learning_rate': trial.suggest_loguniform('learning_rate', 1e-5, 1.),
'ent_coef': trial.suggest_loguniform('ent_coef', 1e-8, 1e-1),
'cliprange': trial.suggest_uniform('cliprange', 0.1, 0.4),
'noptepochs': int(trial.suggest_loguniform('noptepochs', 1, 48)),
'lam': trial.suggest_uniform('lam', 0.8, 1.)
}
def optimize_agent(trial):
""" …Run Code Online (Sandbox Code Playgroud) 我想创建钛酸数据集的堆叠条形图。该情节需要按“ Pclass”,“ Sex”和“ Survived”分组。我已经通过大量乏味的numpy操作做到了这一点,以产生下面的归一化图(其中“ M”是男性,“ F”是女性)
有没有办法使用熊猫内置的绘图功能来做到这一点?
我已经试过了:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('train.csv')
df_grouped = df.groupby(['Survived','Sex','Pclass'])['Survived'].count()
df_grouped.unstack().plot(kind='bar',stacked=True, colormap='Blues', grid=True, figsize=(13,5));
Run Code Online (Sandbox Code Playgroud)
这不是我想要的。无论如何,有没有使用熊猫图制作第一个图?提前致谢
假设我有一个名为 src.py 的脚本,其中定义了几个函数;这些函数都在一个名为 的类中LDA。numpy这些函数需要、等库scipy,这些库在脚本顶部作为标准导入。
现在,在一个名为 的新单独脚本中,main.py我导入该类LDA:
from src import LDA
Run Code Online (Sandbox Code Playgroud)
如果我现在在新脚本中使用该类LDA及其所有函数main.py,即使我没有导入src.py. 这是如何运作的?我是否应该需要 importnumpy等scipy才能main.py工作LDA?
我有一个数据框 df
id price date zipcode
u734 8923944 2017-01-05 AERIU87
uh72 9084582 2017-07-28 BJDHEU3
u029 299433 2017-09-31 038ZJKE
Run Code Online (Sandbox Code Playgroud)
我想创建一个具有以下结构的字典
{'id': xxx, 'data': {'price': xxx, 'date': xxx, 'zipcode': xxx}}
Run Code Online (Sandbox Code Playgroud)
到目前为止我所做的
ids = df['id']
prices = df['price']
dates = df['date']
zips = df['zipcode']
d = {'id':idx, 'data':{'price':p, 'date':d, 'zipcode':z} for idx,p,d,z in zip(ids,prices,dates,zips)}
>>> SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
但我得到了上面的错误。
使用任一方法执行此操作的正确方法是什么
或者
加分点:算法的复杂度是多少,有没有更有效的方法来做到这一点?