使用numpy创建带有嵌套循环的多个矩阵

时间:2019-11-14 06:47:49

标签: python numpy

import numpy as np
import random

x = np.linspace(-3.0,3.0,25)

b = 3; a = -3; n = 24
N = np.matrix(np.zeros(shape=(4,24)));
G = [] #want to save the 2 4by 24 matrices in G
s = []; g = []


Y = []
random.seed(4)

for j in range(0,2):
    Y.append(np.random.randint(-6.0,6.0,size=(4,1)))
    h = (b-a)/float(n)
    s.append(0.5*h*((1+(np.cos((np.pi*(a-Y[j]))/3.0)))))
    g.append(0.5*h*(1+(np.cos((np.pi*(b-Y[j]))/3.0))))
    for k in range(0,Y[j].shape[0]):
        for l in range(1, x.shape[0]-1):
            N[k,l] = h*(1 + (np.cos((np.pi*(x[l]-Y[j][k]))/3.0)))
            N[k,0] = s[j][k]
N = np.concatenate((N,g[j]),axis=1)

print(N)

请,我需要帮助。当我运行此代码时,它只生成一个4by25矩阵,但假设是2个4by25矩阵。我不知道为什么。我的目标是将2个4by25矩阵存储到变量G中,以便当我调用G [0]时,它产生第一个4by25,而G [1]产生第二个4by25。 Y在这里输出2个4by1库仑向量。

1 个答案:

答案 0 :(得分:0)

您的代码应如何将2个矩阵附加到G?您完全错过了那部分。 我并没有真正得到您想要的值,所以我不能告诉您是否正确添加了值,无论如何,您应该添加以下行:

G.append(N)

(我只是假设您要附加N,因为它是唯一的2x24矩阵) 在第一个循环结束之前,结果应类似于:

for j in range(0,2):
    Y.append(np.random.randint(-6.0,6.0,size=(4,1)))
    h = (b-a)/float(n)
    s.append(0.5*h*((1+(np.cos((np.pi*(a-Y[j]))/3.0)))))
    g.append(0.5*h*(1+(np.cos((np.pi*(b-Y[j]))/3.0))))
    for k in range(0,Y[j].shape[0]):
        for l in range(1, x.shape[0]-1):
            N[k,l] = h*(1 + (np.cos((np.pi*(x[l]-Y[j][k]))/3.0)))
            N[k,0] = s[j][k]
    N = np.concatenate((N,g[j]),axis=1)
    G.append(N)