假设你有一个numpy数组和一个列表:
>>> a = np.array([1,2,2,1]).reshape(2,2)
>>> a
array([[1, 2],
[2, 1]])
>>> b = [0, 10]
Run Code Online (Sandbox Code Playgroud)
我想替换数组中的值,以便将1替换为0,将2替换为10.
我在这里发现了类似的问题 - http://mail.python.org/pipermail//tutor/2011-September/085392.html
但使用此解决方案:
for x in np.nditer(a):
if x==1:
x[...]=x=0
elif x==2:
x[...]=x=10
Run Code Online (Sandbox Code Playgroud)
给我一个错误:
ValueError: assignment destination is read-only
Run Code Online (Sandbox Code Playgroud)
我想这是因为我无法写入一个numpy数组.
PS numpy数组的实际大小是514乘504,列表是8.
我在这样的模板中有一个循环
{% spaceless %}
{% for lang_code, lang_name in LANGUAGES %}
<link hreflang={{ lang_code }} href="http://example.com/
{% if lang_code|length > 2 %}
{{ some_path }}
{% else %}
{{ other_path }}
{% endif %}
">
{% endfor %}
{% endspaceless %}
Run Code Online (Sandbox Code Playgroud)
产生这样的东西
<link hreflang="en-gb" href="http://example.com/
some_path/
"><link hreflang="de" ...>
Run Code Online (Sandbox Code Playgroud)
是否可以重写这段代码,以便将整个标记写在一行中?
<link hreflang="en-gb" href="http://example.com/some_path/">
<link hreflang="de" href="http://example.com/other_path/">
...
Run Code Online (Sandbox Code Playgroud)
PS如果if/else子句延伸超过一行,则可以实现,但是该行变得不可读.
我正在尝试用Python绘制时间序列的直方图.已经有这个了类似的问题,但R中.所以,基本上,我需要相同的东西,但我在R中真的很糟糕.我的数据集中每天通常有48个值.其中 - 9999表示缺少数据. 这是数据的样本.
我开始阅读数据并构建一个pandas DataFrame.
import pandas as pd
df = pd.read_csv('sample.csv', parse_dates=True, index_col=0, na_values='-9999')
print df
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 336 entries, 2008-07-25 14:00:00 to 2008-08-01 13:30:00
Data columns (total 1 columns):
159.487691046 330 non-null values
dtypes: float64(1)
Run Code Online (Sandbox Code Playgroud)
现在我可以按天分组数据:
daily = df.groupby(lambda x: x.date())
Run Code Online (Sandbox Code Playgroud)
但后来我被卡住了.我不知道如何使用它matplotlib来获取直方图的时间序列.任何帮助表示赞赏,不一定使用pandas.
我试图使用GridSearchCVfor RandomForestRegressor,但总是得到ValueError: Found array with dim 100. Expected 500. 考虑这个玩具示例:
import numpy as np
from sklearn import ensemble
from sklearn.cross_validation import train_test_split
from sklearn.grid_search import GridSearchCV
from sklearn.metrics import r2_score
if __name__ == '__main__':
X = np.random.rand(1000, 2)
y = np.random.rand(1000)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.5, random_state=1)
# Set the parameters by cross-validation
tuned_parameters = {'n_estimators': [500, 700, 1000], 'max_depth': [None, 1, 2, 3], 'min_samples_split': [1, 2, 3]}
# clf = …Run Code Online (Sandbox Code Playgroud) 我有numpy ndarray,它包含两列:一个是日期,例如2011-08-04,另一个是时间,例如19:00:00:081.
如何将它们组合成一个datetime对象数组?目前,它们是numpy数组中的字符串.
假设您有这种格式的时间:
a = [..., 800.0, 830.0, 900.0, 930.0, 1000.0, 1030.0, ...]
Run Code Online (Sandbox Code Playgroud)
问题是缺少数小时的前导零.例如00:30由下式表示30,08:00由下式表示800.,并00:00由下式表示2400.是否可以time使用strptime方法将此数据解析为对象?我尝试使用以下代码
hours = [time.strptime(str(int(i)), "%H%M") for i in a]
Run Code Online (Sandbox Code Playgroud)
但得到了
ValueError: unconverted data remains: 0
Run Code Online (Sandbox Code Playgroud)
PS我正在使用Python 2.7.
我正在检查 R 赋值运算符并试图了解它们是如何工作的,所以我编写了以下代码:
> somevar1 <- "stuff1"
> "stuff2" -> somevar2
> somevar3 = "stuff3"
> "stuff4" <- somevar4
Error: object 'somevar4' not found
> "stuff5" = somevar5
Error: object 'somevar5' not found
> `<-`(somevar6, "stuff6")
> `=`(somevar7, "stuff7")
> `=`("stuff8", somevar8)
Error: object 'somevar8' not found
> `->`("stuff9", somevar9)
Error in `->`("stuff9", somevar9) : could not find function "->"
> `<<-`(somevar10, "stuff10")
> `->>`("stuff11", somevar11)
Error in `->>`("stuff11", somevar11) : could not find function "->>"
Run Code Online (Sandbox Code Playgroud)
到了上线,somevar9用在哪里,一切似乎都符合预期。Error …
我有ASCII一个相当奇怪的时间戳文件:
DATAH DATE TIME SECONDS NANOSECONDS D
DATA 2012-06-04 23:49:15 1338853755 700000000 0.00855577
DATA 2012-06-04 23:49:15 1338853755 800000000 0.00805482
DATA 2012-06-04 23:49:15 1338853755 900000000 -0.00537284
DATA 2012-06-04 23:49:16 1338853756 0 -0.0239447
Run Code Online (Sandbox Code Playgroud)
基本上,时间戳分为4列--DATE,TIME,SECONDS和NANOSECONDS.我想将该文件作为pandas DataFrameDATE,TIME和NANOSECONDS作为datetime对象读取,它们用作索引:
import datetime as dt
import pandas as pd
parse = lambda x: dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S %f')
df = pd.read_csv('data.txt', sep='\t', parse_dates=[['DATE', 'TIME', 'NANOSECONDS']], index_col=0, date_parser=parse)
Run Code Online (Sandbox Code Playgroud)
但这失败了,因为%f格式要求纳秒值有9位而不是6位.如果我手动从NANOSECONDS列中的值中删除3个额外的零,则上述代码有效.您能告诉我,如何pandas DataFrame使用DATE,TIME和NANOSECONDS列作为索引将示例文件作为对象读入?
[ UPDATE ]使用%f000所建议behzad.nouri如果纳秒列不包含0值的工作原理.所以,显然这就是现在造成问题的原因.
我需要将大量(几百万条记录)文件分成半小时文件,使用pandas与其他第三方软件一起使用.这是我试过的:
import datetime as dt
import string
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(1728000, 2), index=pd.date_range('1/1/2014',
periods=1728000, freq='0.1S'))
df_groups = df.groupby(df.index.map(lambda t: dt.datetime(t.year, t.month,
t.day, t.hour)))
for name, group in df_groups:
group.to_csv(string.replace(str(name), ':', '_') + '.csv')
Run Code Online (Sandbox Code Playgroud)
但这样我才能让熊猫按小时分开.如果我想将它们分成半小时的文件,我该怎么办?
要记住以下几点:a)大文件可能会持续数天,所以如果我使用的话,lambda t: t.hour我可以从不同的日期获取数据,但同时将数据组合在一起; b)大文件有间隙,因此有些半小时可能不完整,有些可能完全丢失.