【问题标题】:Conditional addition of different values to an array using python使用python有条件地将不同的值添加到数组中
【发布时间】:2016-09-28 06:07:54
【问题描述】:

如果x < 50 我想加10,如果50 <= x < 100 加20,如果100 <= x < 150 加30,150 <= x < 200 加40。我怎么解决这个问题?在我的数组arr 中,我有 300 多个数据元素。预先感谢您的友好合作。

arr =[10,20,30,40,50,60,70,80,90,100,120,130,140,150,160,170,180,190,200]

【问题讨论】:

  • 我想为 x
  • 这不是一个很难回答的问题,所以我鼓励您查看 python maplist comprehension。到目前为止,您尝试过什么?

标签: python arrays conditional add


【解决方案1】:

这似乎有点像家庭作业? 我会明确划分出您需要进行的修改,以便很容易看到它在做什么。请注意:我没有输入你所有的规则,只是一些,所以你可以看看如何扩展它。

x=[10,20,30,40,50,60,70,80,90,100,120,130,140,150,160,170,180,190,200]
for value in x:
     oldvalue = value
     if value  < 50:
         value += 10
     elif value < 100:
         value += 20
     else:
         value += 30
     print("%i => %i" % (oldvalue, value))

打印出来:

10 => 20
20 => 30
30 => 40
40 => 50
50 => 70
60 => 80
70 => 90
80 => 100
....

【讨论】:

  • 谢谢。如果 x
  • 只需更改条件以包含新语句:if value > 10 and value
  • for xc_141 in x_141: oldvaluex = xc_141 for yc_141 in y_141: oldvaluey = yc_141 if [xc_141 %d" % (oldvaluey, yc_141)) else: yc_141=y_141-50 xc_141=x_141-67 print ("%d => %d" % (oldvaluex, xc_141)) plt.plot(xc_141,yc_141,"gs"),
  • 如您所见,这两个循环造成了问题。我无法解决它。再次感谢您的帮助。@MichielB
  • for xc_141 in x_141: oldvaluex = xc_141 for yc_141 in y_141: oldvaluey = yc_141 if [xc_141&lt;10000] and [yc_141&lt;30000]: xc_141 -= 43 yc_141+=50 elif xc_141 &lt; 10000 and 30000&lt;yc_141&lt;46000: xc_141 += 212 yc_141+=50 else: yc_141=y_141-50 xc_141=x_141-67 #print ("y value= ", "%d =&gt; %d" % (oldvaluey, yc_141)) else: yc_141=y_141-50 xc_141=x_141-67 #print ("%d =&gt; %d" % (oldvaluex, xc_141)) plt.plot(xc_141,yc_141,"gs")
【解决方案2】:

使用 panda 也很容易。感谢这个网站的帮助。

 import matplotlib.pyplot as plt
 import numpy as np 
 import pandas as pd
 import math
 import xlwt
 import xlrd


 df_180 = pd.read_csv('Image_146.pft', error_bad_lines=False,header=19)
 df_181 = pd.read_csv('Image_T181.pft', error_bad_lines=False,header=20)

 df_182 = pd.read_csv('Image_T182.pft', error_bad_lines=False, header=20)
 df_183 = pd.read_csv('Image_T183.pft', error_bad_lines=False, header=20)


 x_180=df_180.iloc[:,7]
 y_180=df_180.iloc[:,8]

 x_181=df_181.iloc[:,7]
 y_181=df_181.iloc[:,8]

 x_182=df_182.iloc[:,7]
 y_182=df_182.iloc[:,8]

 x_183=df_183.iloc[:,7]
 y_183=df_183.iloc[:,8]

 plt.style.use('ggplot')

fn ="C:\Users\M15-1478\Desktop\python\Scatter plot.xlsx"
sheetname = 'T181'
df = pd.read_excel(fn, sheetname=sheetname, skiprows=47,    parse_cols='B:C').dropna(how='any')
df.ix[df.eval('0 <= GrvX <= 500'), 'GrvX'] -= 161
df.ix[df.eval('500 < GrvX <= 1000'), 'GrvX'] -= 114
df.ix[df.eval('1000 < GrvX < 1500'), 'GrvX'] -= 75
df.ix[df.eval('1500 < GrvX < 2000'), 'GrvX'] -= 15
df.ix[df.eval('2000 < GrvX < 2600'), 'GrvX'] += 30
df.ix[df.eval('2600 < GrvX < 2900'), 'GrvX'] += 70

# customize Y-values
df.ix[df.eval('0 <= GrvY <= 1000'), 'GrvY'] += 30

df.plot(x='GrvX', y='GrvY',  linestyle='no line', marker="o", label=sheetname)
plt.plot(x,y,"gs")

plt.xlabel("x (micron)", size ="18",color ="m")
plt.ylabel("y (micron)", size ="18",color ="m")
plt.title("scatter plot after matching", size ="18",color ="m")
plt.show()

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2019-03-28
    • 1970-01-01
    • 2022-08-18
    • 2013-02-14
    • 2014-02-18
    相关资源
    最近更新 更多