Python 构建numpy矩阵

Python 构建numpy矩阵,python,arrays,numpy,matrix,iteration,Python,Arrays,Numpy,Matrix,Iteration,我想用numpy建立一个矩阵。矩阵尺寸应为(5001x7)。这是我的密码: S=np.array([.0788,.0455,.0222,.0042,.0035,.0029,.0007]) #This is vector S, comprised of 7 scalars. lamb=list(range(0,5001)) #This is a list of possible values for lambda, a parameter in my data. M = np.empty([5

我想用numpy建立一个矩阵。矩阵尺寸应为(5001x7)。这是我的密码:

S=np.array([.0788,.0455,.0222,.0042,.0035,.0029,.0007])
#This is vector S, comprised of 7 scalars.

lamb=list(range(0,5001))
#This is a list of possible values for lambda, a parameter in my data.

M = np.empty([5001,7], order='C')
#This is the empty matrix which is to be filled in the iterations below.

for i in S:
    for j in lamb:
         np.append(M,((S[i]**2)/(lamb[j]+S[i]**2)))
我的问题是m仍然是一个零向量矩阵

重要细节: 1) 我已将最后一行指定为:

    M=np.append(M,((S[i]**2)/(lamb[j]+S[i]**2)))
然后我得到一个1d数组中长度为70014的值数组。我真的不知道该怎么办

2) 我已经尝试在矩阵M的“float”和“int”之间切换dtype参数

3) 我在运行代码时收到此警告: VisibleDepractionWarning:使用非整数而不是整数将导致将来出现错误 app.launch_new_instance()

4) 我正在使用Python 3.4


我真的很感谢你的帮助。谢谢大家!

np.append
制作数组的副本并将值附加到副本的末尾(使数组每次都变大),而我认为您需要修改
M

 for i in range(len(S)):
     for j in range(len(lamb)):
          M[j][i] = ((S[i]**2)/(lamb[j]+S[i]**2))
1)
append
添加到数组的末尾,这就是最终数组具有
5001x7x2=70014
元素的原因。只有前半部分是零。它将数组展平到1D,因为您没有指定要附加的

2) 要完成整个过程,一种更为“numpy”的方式是广播

S=np.array([.0788,.0455,.0222,.0042,.0035,.0029,.0007])
lamb=np.arange(0,5001)
M=(S[:,None]**2)/(lamb[None,:]+S[:,None]**2)

我不认为np.append
正在做你认为它正在做的事情。谢谢你这么快回复我并解释我的代码失败的原因。你的解决方案也很好。谢谢,我投票选择了你的解决方案作为答案,因为我学到了一些关于numpy广播的知识。这是一种很好的填充矩阵的方法。感谢您解释模式代码失败的原因。非常感谢。