Python 中的矩阵分配错误?

问题描述 投票:0回答:1

我有这个代码:

#! /usr/bin/env python
import sys
import numpy
import math

inputfile=open(sys.argv[1],'r')

atoms=numpy.zeros((6,3),dtype='float64')
for line in inputfile:
    sline=line.split()
    header=sline[0]
    for i in range(1,4,1):
        atoms[i]=float(sline[i])
        #print(float(sline[i]))
print(atoms)

输入文件的内容为:

 O5    -2.978    -1.342     0.528
 C1    -4.475    -1.062     0.491
 C2    -4.710    -0.049    -0.519
 C3    -4.193     1.266    -0.144
 C4    -3.045     1.113     0.856
 C5    -2.268    -0.070     0.555

我想提取坐标并将它们保存在称为原子的矩阵中。但是,我得到的矩阵的内容是:

[[ 0.     0.     0.   ]
 [-2.268 -2.268 -2.268]
 [-0.07  -0.07  -0.07 ]
 [ 0.555  0.555  0.555]
 [ 0.     0.     0.   ]
 [ 0.     0.     0.   ]]

这段代码有什么问题?

python numpy
1个回答
-1
投票

atoms
是一个 2D 数组,但您仅使用一个索引对其进行索引,因此
atoms[i]
指的是整行。当您将一个标量分配给这样的数组(的一个切片)时,该标量将被“广播”,即根据需要重复多次,以填充整个切片(即在本例中为一行)。

© www.soinside.com 2019 - 2024. All rights reserved.