繁体   English   中英

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

[英]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.onesnp.emptynp.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM