我有以下数据集。
我的目标是将第2列中的值替换为两个连续值的平均值,此时第1列中的值保持小于5且大于6.准确地说,在< 5范围内第1列中的值是1,2,3和4,相应的第2列值是10,20,30,40。所以,我想取(10,20)= 15和(30,40)= 35的平均值。我想在第1列的范围> 6中进行相同的操作,取相应的第2列值(70,80)= 75和(80,90)= 95的平均值。当第1列值不属于这两个范围(5和6)以及相应的第2列值(50和60)时,我不会取第2列值的平均值,最后根据这三个条件创建第2列值数组。
我尝试了以下方法:
import numpy as np
import pandas as pd
data= pd.read_table('/Users/Hrihaan/Desktop/Data.txt', dtype=float, header=None, sep='\s+').values
t=data[:,0]
df = pd.DataFrame({"x":t, "y":data[:,1]})
x=np.where(t<=4,data[:,1],np.nan)
x_1=np.nanmean(x.reshape(-1, 2), axis=1)
y=np.where((df.x>4)&(df.x<7), df.y,np.nan)
z=np.where(t>6,data[:,1],np.nan)
z_1=np.nanmean(z.reshape(-1, 2), axis=1)
A=np.concatenate((x_1,y,z_1), axis=0)
print(A)
我得到以下输出: [15. 35. nan nan nan nan nan nan 50. 60. nan nan nan nan nan nan nan 75. 95。]
我的预期输出是: [15. 35. 50. 60. 75. 95。]
如何在我的代码中解决np.nan的任何帮助都会非常有用。
答案 0 :(得分:1)
这就是你想要的
a=np.vstack((np.arange(1,11),np.arange(10,110,10))).T
b=(a[:-1,1]+a[1:,1])/2
indL=np.argmax(a[:,0]>5)-1
indH=np.argmax(a[:,0]>6)
out=np.hstack((b[:indL:2],a[indL:indH,1],b[indH::2]))
答案 1 :(得分:1)
我真的很难在这里看到你更大的概念。对于你非常具体的问题,这将有效:
public class ModelToPersistBetweenFormSubmits()
{
public string field1 { get; set;}
public string field2 { get; set;}
public string field3 { get; set;}
public string field4 { get; set;}
public string GetHiddenFields(string excludeFields = "")
{
string[] excludeFieldList = excludeFields.Split(',');
string val = string.Empty;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach (System.Reflection.PropertyInfo property in this.GetType().GetProperties())
{
if (excludeFieldList.Contains(property.Name))
{
continue;
}
else if (property.GetIndexParameters().Length > 0)
{
val = string.Empty; //sb.Append("Indexed Property cannot be used");
}
else
{
val = (property.GetValue(this, null) ?? "").ToString();
}
sb.Append(string.Format("<input type='hidden' id='{0}' name='{0}' value='{1}'/>", property.Name, val));
sb.Append(System.Environment.NewLine);
}
return sb.ToString();
}
}
//render hidden fields except for current inputs
@Html.Raw(Model.GetHiddenFields("field4,field3"))
但是如果要排除例如x = 4和6,那么你的预期输出是多少?然后你有几个奇异的值,你没有给出任何指令,它们在平均过程中会发生什么。