Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scipy——如何将一个零数组插入到另一个具有不同维数的数组中_Python_Scipy - Fatal编程技术网

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

Python scipy——如何将一个零数组插入到另一个具有不同维数的数组中,python,scipy,Python,Scipy,如果我有一个数组: myzeros=scipy.zeros((c*pos,c*pos)) , c=0.1 , pos=100 和一个数组: grid=scipy.ones((pos,pos)) 如何在随机位置将零插入网格?问题在于尺寸 我知道在1d中,您可以做到: myzeros=sc.zeros(c*pos) # array full of (zeros) grid=sc.ones(pos) # grid full of available positions(ones)

如果我有一个数组:

myzeros=scipy.zeros((c*pos,c*pos))  , c=0.1 , pos=100
和一个数组:

grid=scipy.ones((pos,pos))
如何在随机位置将零插入网格?问题在于尺寸

我知道在1d中,您可以做到:

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)
,但它仍然不起作用。

有几种方法,但最简单的方法似乎是首先将二维网格转换为一维网格,然后像一维情况一样继续,然后再转换回二维:

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))
编辑:回答您的评论:如果您只想将myzero的一部分放入网格数组,则必须将dist数组变小。例如:

dist = scipy.random.permutation(pos*pos)[:c*pos]
grid1D[dist] = myzeros1D[:c*pos]
我希望你们知道,最后一行可以写成

grid1D[dist] = 0

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

:您好,当我运行最后一个命令时,它会告诉我“grid=grid1D.reformate((cpos,cpos))。有什么想法吗?谢谢!嗨,我不知道你说的是什么意思,但我在最后一行有个错误。也许你只是忘记在最后一行按enter键了?:我有一个输入错误。它可以工作。但问题是我想将cpos零插入网格=scipy.ones((pos,pos))。根据上面的说明,它会将myzeros数组(cpos CPO)的形状数插入网格。我想不出一种方法来做到这一点!:正是我想要的!非常感谢。另外,它不需要创建myzeros=scipy.zeros((cpos,cpos))。它可以用1D myzeros完成。(这是关于我的第二个问题)。