gpt4 book ai didi

python - scipy——如何将一个零数组插入到另一个具有不同维度的数组中

转载 作者:行者123 更新时间:2023-11-30 23:48:13 25 4
gpt4 key购买 nike

如果我有一个数组:

myzeros=scipy.zeros((c*pos,c*pos))  , c=0.1 , pos=100

和一个数组:

grid=scipy.ones((pos,pos))

如何将零插入网格中的随机位置?问题出在尺寸上。

我知道在一维中你可以做到:

myzeros=sc.zeros(c*pos) # array full of (zeros)
grid=sc.ones(pos) # grid full of available positions(ones)
dist=sc.random.permutation(pos)[:c*pos] # distribute c*pos zeros in random
# positions
grid[dist]=myzeros

我尝试过类似的方法,但没有成功。我也尝试过:myzeros=sc.zeros(c*pos),但它仍然不起作用。

最佳答案

有多种方法,但最简单的似乎是首先将 2D 网格转换为 1D 网格,并按照 1D 情况进行操作,然后转换回 2D:

c = 0.1
pos = 100
myzeros=scipy.zeros((c*pos,c*pos))
myzeros1D = myzeros.ravel()
grid=scipy.ones((pos,pos))
grid1D = grid.ravel()
dist=sc.random.permutation(pos*pos)[:c*pos*c*pos]
grid1D[dist]=myzeros1D
myzeros = myzeros1D.reshape((c*pos,c*pos))
grid = grid1D.reshape((pos, pos))

编辑:回答您的评论:如果您只想将 myzeros 的一部分放入网格数组中,则必须使 dist 数组更小。示例:

dist = scipy.random.permutation(pos*pos)[:c*pos]
grid1D[dist] = myzeros1D[:c*pos]

我希望你知道,最后一行可以写成

grid1D[dist] = 0

如果您确实只想将这些元素设置为单个元素而不是使用另一个数组中的元素。

关于python - scipy——如何将一个零数组插入到另一个具有不同维度的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com