[英]How to declare and fill an array in NumPy?
我需要在 Python 中创建一个空数组并用循环方法填充它。
data1 = np.array([ra,dec,[]])
这是我所拥有的。 ra 和 dec 部分来自我导入的另一个数组。 我遇到的问题是填充其他列。 例子。 假设要填写第 3 列,我这样做:
for i in range (0,56):
data1[i,3] = 32
我得到的错误是:
IndexError:上述代码示例中第二行的索引无效。
此外,当我检查我创建的数组的形状时,它会出现在(3,)
。 我已经输入的数据是两列,有 56 行数据。
那么我在哪里搞砸了? 我应该转置数组吗?
你可以这样做:
data1 = np.zeros((56,4))
得到一个 56 x 4 的数组。 如果你不喜欢用0
开始数组,你可以使用np.ones
或np.empty
或np.ones((56, 4)) * np.nan
然后,在大多数情况下,如果出于性能原因不需要,最好不要使用 python-loop。 因此,作为示例,这将执行您的循环:
data[:, 3] = 32
data1 = np.array([ra,dec,[32]*len(ra)])
为您的问题提供单行解决方案; 但是为了效率,最好先分配一个空数组,然后再复制相关部分,这样就可以避免构建虚拟列表。
没有人提到的一件事是,在 Python 中,索引从 0 开始,而不是 1。
这意味着如果您想查看数组的第三列,您实际上应该寻址[:,2]
,而不是[:,3]
。
祝你好运!
假设 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
嘿伙计们,如果你想用相同的数字填充数组
x_2 = np.ones((1000))+1
1000 个数字的示例 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.