Python数组操作,pi*[n+;1]^2-pi*[n]^2
我正在写一个脚本,将多个圆柱体的内圆柱体与外圆柱体相减 例如:Python数组操作,pi*[n+;1]^2-pi*[n]^2,python,arrays,loops,Python,Arrays,Loops,我正在写一个脚本,将多个圆柱体的内圆柱体与外圆柱体相减 例如:x=pi*[n+1]**2-pi*[n]**2 但是,我不知道如何让n在示例1-4中每次更改,我希望能够更改n并让代码在不必更改所有内容的情况下运行新值 x = pi*[1]**2 - pi*[0]**2 x = pi*[2]**2 - pi*[1]**2 x = pi*[3]**2 - pi*[2]**2 x = pi*[4]**2 - pi*[3]**2 我试图让while循环工作,但如果不明确说明要引用数组中的哪个数字
x=pi*[n+1]**2-pi*[n]**2
但是,我不知道如何让n在示例1-4中每次更改,我希望能够更改n并让代码在不必更改所有内容的情况下运行新值
x = pi*[1]**2 - pi*[0]**2
x = pi*[2]**2 - pi*[1]**2
x = pi*[3]**2 - pi*[2]**2
x = pi*[4]**2 - pi*[3]**2
我试图让while循环工作,但如果不明确说明要引用数组中的哪个数字,我就无法知道如何引用n
任何帮助都将不胜感激
rs = 0.2 # Radius of first cylinder
rc = 0.4 # Radius of each cylinder (concrete)
rg = 1 # Radius of each cylinder (soil)
BW = 3 # No. cylinders (concrete)
BG = 2 # No. cylinders (soil)
v1 = np.linspace(rs, rc, num=BW) # Cylinders (concrete)
v2 = np.linspace(rc * 1.5, rg, num=BG) # Cylinders (soil)
n = np.concatenate((v1, v2)) # Combined cylinders
for i in range(BW + BG):
x = np.pi * (n[i + 1] ** 2) - np.pi * (n[i] ** 2)
试试这个:
for n in range(4): # 0 to 3
x = pi*[n+1]**2 - pi*[n]**2 #[1] - [0], [2] - [1] and so on...
# doSomething
如果[n]
是名为num
的数组的索引,请将[n]
替换为
num[n]
像这样:
for n in range(4): # 0 to 3
x = pi*(num[n+1]**2) - pi*(num[n]**2) #[1] - [0], [2] - [1] and so on...
# doSomething
for n in range(4): # 0 to 3
x = pi*((n+1)**2) - pi*(n**2) #[1] - [0], [2] - [1] and so on...
# doSomething
如果只是n
,则将[n]
替换为n
,如下所示:
for n in range(4): # 0 to 3
x = pi*(num[n+1]**2) - pi*(num[n]**2) #[1] - [0], [2] - [1] and so on...
# doSomething
for n in range(4): # 0 to 3
x = pi*((n+1)**2) - pi*(n**2) #[1] - [0], [2] - [1] and so on...
# doSomething
试试这个:
for n in range(4): # 0 to 3
x = pi*[n+1]**2 - pi*[n]**2 #[1] - [0], [2] - [1] and so on...
# doSomething
如果[n]
是名为num
的数组的索引,请将[n]
替换为
num[n]
像这样:
for n in range(4): # 0 to 3
x = pi*(num[n+1]**2) - pi*(num[n]**2) #[1] - [0], [2] - [1] and so on...
# doSomething
for n in range(4): # 0 to 3
x = pi*((n+1)**2) - pi*(n**2) #[1] - [0], [2] - [1] and so on...
# doSomething
如果只是n
,则将[n]
替换为n
,如下所示:
for n in range(4): # 0 to 3
x = pi*(num[n+1]**2) - pi*(num[n]**2) #[1] - [0], [2] - [1] and so on...
# doSomething
for n in range(4): # 0 to 3
x = pi*((n+1)**2) - pi*(n**2) #[1] - [0], [2] - [1] and so on...
# doSomething
我认为这应该提供您想要的结果:
rs = 0.2 # Radius of first cylinder
rc = 0.4 # Radius of each cylinder (concrete)
rg = 1 # Radius of each cylinder (soil)
BW = 3 # No. cylinders (concrete)
BG = 2 # No. cylinders (soil)
v1 = np.linspace(rs, rc, num=BW) # Cylinders (concrete)
v2 = np.linspace(rc * 1.5, rg, num=BG) # Cylinders (soil)
n = np.concatenate((v1, v2))
results = []
for i, v in enumerate(n):
if i+1 < len(n):
results.append(pi * n[i+1] ** 2 - pi * v ** 2)
else:
break
rs=0.2#第一个圆柱体的半径
rc=0.4#每个圆柱体的半径(混凝土)
rg=1#每个圆柱体的半径(土壤)
BW=3个圆柱体(混凝土)
BG=2个气缸(土壤)
v1=np.linspace(rs,rc,num=BW)#圆柱体(混凝土)
v2=np.linspace(rc*1.5,rg,num=BG)#圆柱体(土壤)
n=np.连接((v1,v2))
结果=[]
对于枚举(n)中的i,v:
如果i+1
我认为这应该提供您想要的结果:
rs = 0.2 # Radius of first cylinder
rc = 0.4 # Radius of each cylinder (concrete)
rg = 1 # Radius of each cylinder (soil)
BW = 3 # No. cylinders (concrete)
BG = 2 # No. cylinders (soil)
v1 = np.linspace(rs, rc, num=BW) # Cylinders (concrete)
v2 = np.linspace(rc * 1.5, rg, num=BG) # Cylinders (soil)
n = np.concatenate((v1, v2))
results = []
for i, v in enumerate(n):
if i+1 < len(n):
results.append(pi * n[i+1] ** 2 - pi * v ** 2)
else:
break
rs=0.2#第一个圆柱体的半径
rc=0.4#每个圆柱体的半径(混凝土)
rg=1#每个圆柱体的半径(土壤)
BW=3个圆柱体(混凝土)
BG=2个气缸(土壤)
v1=np.linspace(rs,rc,num=BW)#圆柱体(混凝土)
v2=np.linspace(rc*1.5,rg,num=BG)#圆柱体(土壤)
n=np.连接((v1,v2))
结果=[]
对于枚举(n)中的i,v:
如果i+1
这个怎么样:
for i, value in enumerate(n[:-1]):
print(np.pi * (n[i + 1] ** 2) - np.pi * (value ** 2))
对我来说,它打印:
0.157079632679
0.219911485751
0.628318530718
2.0106192983
也许你想要这个:
>>> values = [np.pi * (n[i + 1] ** 2) - np.pi * (value ** 2)
for i, value in enumerate(n[:-1])]
>>> values
[0.15707963267948971, 0.2199114857512855, 0.62831853071795885, 2.0106192982974673]
让我们解释一下:
- 我们必须获取列表中除最后一个之外的所有元素,因为
对于最后一项失败,所以我们使用n[i+1]
(如果切片的开头是0,我们可以省略它,如果它等于或大于n[0:-1]
,我们可以省略切片的结尾)len(n)
以enumerate(a_list)
[(0,列表[0]),(1,列表[1]),…,(n,列表[n)]
将每对解压为名为对于i,value in…
和i
value
返回一个新列表。您可以进行计算并过滤值。例如,如果您想要一个偶数整数平方的列表,请参见下面的10:[列表中某物的某物]
>>[x*x表示范围(10)内的x,如果x%2==1]
[1,9,25,49,81]
- 这个怎么样:
for i, value in enumerate(n[:-1]):
print(np.pi * (n[i + 1] ** 2) - np.pi * (value ** 2))
对我来说,它打印:
0.157079632679
0.219911485751
0.628318530718
2.0106192983
也许你想要这个:
>>> values = [np.pi * (n[i + 1] ** 2) - np.pi * (value ** 2)
for i, value in enumerate(n[:-1])]
>>> values
[0.15707963267948971, 0.2199114857512855, 0.62831853071795885, 2.0106192982974673]
让我们解释一下:
- 我们必须获取列表中除最后一个之外的所有元素,因为
对于最后一项失败,所以我们使用n[i+1]
(如果切片的开头是0,我们可以省略它,如果它等于或大于n[0:-1]
,我们可以省略切片的结尾)len(n)
以enumerate(a_list)
[(0,列表[0]),(1,列表[1]),…,(n,列表[n)]
将每对解压为名为对于i,value in…
和i
value
返回一个新列表。您可以进行计算并过滤值。例如,如果您想要一个偶数整数平方的列表,请参见下面的10:[列表中某物的某物]
>>[x*x表示范围(10)内的x,如果x%2==1]
[1,9,25,49,81]
# compute your `n` array as before
areas = pi * n**2 # this will be a new array with the area of each cylinder
area_differences = areas[1:] - areas[:-1] # differences in area between adjacent cylinders
由于您的数字位于numpy数组中,因此在整个数组(或其中的片段)中使用广播操作比编写显式循环并对单个项目进行操作要高效得多。这是使用numpy的主要原因 试着这样做:
# compute your `n` array as before
areas = pi * n**2 # this will be a new array with the area of each cylinder
area_differences = areas[1:] - areas[:-1] # differences in area between adjacent cylinders
为什么不能具体说明要引用哪个数组号?提供更多的上下文代码会很有用。为什么不能具体说明要引用哪个数组号?提供更多的上下文代码会很有用。
pi*[n]**2
没有任何意义,因为[n]
是一个单元素列表。我认为提问者的意思是将其作为一个索引,所以将pi*放入一些\u序列[n]**2
取而代之。感谢您的及时响应,不管它们是浮点数,有没有一种简单的方法可以使范围与浮点数一起工作?@ScottLines我不明白您所说的使范围与浮点数一起工作是什么意思?
我得到一个错误,即“float”对象不能解释为浮点数integer@ScottLines我无法重现那个问题m、 请您输入完整的代码好吗?pi*[n]**2
没有任何意义,因为[n]
是一个单元素列表。我想提问者的意思是