在计算中使用列和行值生成给定大小的方形Numpy数组



我有一个一维Yk值的数组,其中U的每个后续值=随机数[0,1],k=1,2,3..N。我需要构建一个大小为NxN的数组,该数组将填充不同的条件,这取决于行和列的索引。如果阵列单元的列和行的索引等于(i=m(2π+0.1*U_k,i=m,则阵列单元由上条件sin(i-k(*cos填充⁡π(i-k(,i≠m,否则为下一个。我没有处理数组的行和列参与填充这个数组的事实,所以我对实现感到困惑。我只需要一个填充的工作基础,所以对于4x4来说,NxN的有限数组就足够了。

在此处输入图像描述

简化了任务,我得到了我需要得到的东西。然而,一些问题仍然存在。

1:在[0,1]中,应该有一个随机数数组的元素,而不是变量U,这个元素是U_k,其中k是它在一维数组中的索引。例如,在数组U_k=[0.11,0.5,0.66]中:U1=0.11,U2=0.5,U3=0.66。

2:另外,我需要形成一个一维数组,而不是变量A的恒定输出。换句话说,我仍然存在从先前设置的数组U_k输出值以及将循环执行的结果打包到一维数组中的问题。

import numpy as np
import math 
i=0
k=1
N=5
U=10 
while k < N:
while i < N:
i= i+1
k = k
if i==k:
A = 2* math.pi + 0.1 * U
if i != k:
A = math.sin(i-k)* math.cos(math.pi*(i-k))
print(A)
else:
i= 1
k= k+1

我不确定你的U_ks,但你在标题中问的问题有以下简单的解决方案:

np.fromfunction(lambda i, j: i + 10*j, (4, 4))

产生

array([[ 0, 10, 20, 30],
[ 1, 11, 21, 31],
[ 2, 12, 22, 32],
[ 3, 13, 23, 33]])

很明显,你可以用你的U_k/Sine东西代替我的回流线。

注意,您可以使用类似于纯python的so 实现类似的功能

[[i + 10*j for j in range(n)] for i in range(n)]

但努皮的速度快了50倍。

最新更新