为了账号安全,请及时绑定邮箱和手机立即绑定

如何添加创建多个相同项目并将它们添加到数组中?

如何添加创建多个相同项目并将它们添加到数组中?

皈依舞 2021-06-11 16:04:30
我正在尝试创建一个形状数组 (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 npimport math L = 36Inter = 3600n_o_s = 13l_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 zzprint(f(z))任何想法,达伦这就是我的结果,但我只收到 3599 个值而不是所需的 3600 个任何想法?我使用直径输出另一个变量(基本上将 d_o_s 中的直径交换为 i_o_s 中的值)L = 36Inter = 3600n_o_s = 13l_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)/64si = 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)
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

在 python 中,像4 *[1]产生这样的操作[1,1,1,1]。因此,您需要计算子数组的长度,创建它们,然后使用 将它们连接起来sum()。


lengths = si[1:] - si[:-1]


result = sum([

    [value]*length for value, length in zip(d_o_s, lengths)

], [])

此外,您的si数组是 float 类型,因此在用作索引时会出现舍入错误。通过更改将其转换为整数


si = np.asarray((l_o_s/L)*Inter)


si = np.asarray((l_o_s/L)*Inter).astype(int)


查看完整回答
反对 回复 2021-06-15
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号