我是python语法的新手,不是编程的新手。我需要在python中创建一个空数组,并在循环方法中填充它。
data1 = np.array([ra,dec,[]])
这就是我所拥有的。 ra和dec部分来自我导入的另一个数组。我遇到的问题是填写其他栏目。 例。让我们说填写第3栏我这样做:
for i in range (0,56):
data1[i,3] = 32
我得到的错误是:IndexError:上述代码示例中第二行的无效索引。 另外,当我检查我创建的数组的形状时,它将出现在(3,)。我已经输入的数据是两列,包含56行数据。
那我在哪里乱搞?我应该转置阵列吗? 感谢大家的帮助
答案 0 :(得分:4)
你可以这样做:
data1 = np.zeros((56,4))
获得56乘4阵列。如果您不想使用0
启动数组,可以使用np.ones
或np.empty
或np.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