我正在尝试创建一个形状数组 (1, inter) [即 1 row, inter Columns],其中 inter 是用户输入;
如果你看下面的代码,
l_o_s, Inter, n_o_s, L, d_o_s
都来自用户输入
该n_o_s
表示具有对应于值的长度跨越所述轴的总长度的部分的数量l_o_s
对应于所述值和直径d_o_s
。
所以
第 1 节的长度为 1.5,直径为 3.75
第 2 节 = 长度 4.5-1.5 = 3 直径 3.5
第 3 节 = 长度 7.5-4.5 = 3 和直径 3.75
等等……
这是轴排列的图像:
Inter 是我在分析中需要的间隔数,在这种情况下,inter 是 3600,所以我需要一个 (1,3600) 数组。
si 是一个数组,它是 中单个部分的长度l_o_s、系统的总长度 (L) 和间隔 (Inter)的函数(数学)。
这是问题
所以如果你把每一个值 si = [ 150. 450. 750. 1050. 1350. 1650. 1950. 2250. 2550. 2850. 3150. 3450. 3600.]
我需要一个形状数组 (1,3600),其前 150 个元素都等于第 1 部分的直径 - (3.75),而 150 到 450 之间的元素我需要它们等于第二部分的直径 (3.5)等等……
所以我需要与 d_o_s 中的索引 0 对应的前 150 个元素和与 d_o_s 中的索引 1 对应的接下来的 300 个元素,等等......
这是我开始的代码,但我认为不值得谈论。我正在创建一个零数组,其内部形状对应于 150,300,300,300 个元素中的每一个。
import numpy as np
import math
L = 36
Inter = 3600
n_o_s = 13
l_o_s = np.asarray([1.5,4.5,7.5,10.5,13.5,16.5,19.5,22.5,25.5,28.5,31.5,34.5,36])
d_o_s = np.asarray([3.75,3.5,3.75,3.5,3.75,3.5,3.75,3.5,3.75,3.5,3.75,3.5,3.75])
si = np.asarray((l_o_s/L)*Inter)
print(si)
z = (si.size)
def f(x):
for i in si:
zz = np.zeros((x,1,int(i)))
for j in range(int(z)):
for p in range(int(d_o_s[j])):
zz[j][0][p] = np.full((1,int(i)),(math.pi*d_o_s**4)/64)
return zz
print(f(z))
任何想法,达伦
这就是我的结果,但我只收到 3599 个值而不是所需的 3600 个任何想法?我使用直径输出另一个变量(基本上将 d_o_s 中的直径交换为 i_o_s 中的值)
L = 36
Inter = 3600
n_o_s = 13
l_o_s = np.asarray([0,1.5,4.5,7.5,10.5,13.5,16.5,19.5,22.5,25.5,28.5,31.5,34.5,36])
d_o_s = np.asarray([3.75,3.5,3.75,3.5,3.75,3.5,3.75,3.5,3.75,3.5,3.75,3.5,3.75])
i_o_s = (math.pi*d_o_s**4)/64
si = np.asarray((l_o_s/L)*Inter)
lengths = si[1:] - si[:-1]
Iu = np.asarray(sum([[value]*(int(length)) for value, length in zip(i_o_s, lengths)], []))
print(Iu,Iu.shape)
扬帆大鱼
相关分类