如何在python中声明和填充数组?

时间:2014-07-30 16:34:13

标签: python arrays numpy

我是python语法的新手,不是编程的新手。我需要在python中创建一个空数组,并在循环方法中填充它。

data1 = np.array([ra,dec,[]])

这就是我所拥有的。 ra和dec部分来自我导入的另一个数组。我遇到的问题是填写其他栏目。 例。让我们说填写第3栏我这样做:

for i in range (0,56):
    data1[i,3] = 32

我得到的错误是:IndexError:上述代码示例中第二行的无效索引。 另外,当我检查我创建的数组的形状时,它将出现在(3,)。我已经输入的数据是两列,包含56行数据。

那我在哪里乱搞?我应该转置阵列吗? 感谢大家的帮助

4 个答案:

答案 0 :(得分:4)

你可以这样做:

data1 = np.zeros((56,4))

获得56乘4阵列。如果您不想使用0启动数组,可以使用np.onesnp.emptynp.ones((56, 4)) * np.nan

然后,在大多数情况下,如果出于性能原因不需要python循环,最好不要。 举个例子,这就是你的循环:

data[:, 3] = 32

答案 1 :(得分:3)

data1 = np.array([ra,dec,[32]*len(ra)])

为您的问题提供单线解决方案;但是为了提高效率,首先分配一个空数组然后复制相关部分会更好,所以你可以避免构建虚拟列表。

答案 2 :(得分:1)

没有人提到的一件事是,在Python中,索引从0开始,而不是1.

这意味着如果您想查看数组的第三列,实际上应该是[:,2],而不是[:,3]

祝你好运!

答案 3 :(得分:0)

假设ra和dec是向量(1-d):

data1 = np.concatenate([ra[:, None], dec[:, None], np.zeros((len(ra), 1))+32], axis=1)

Or 

data1 = np.empty((len(ra), 3))
data[:, 0] = ra
data[:, 1] = dec
data[:, 2] = 32