Python 如何在NumPy中声明和填充数组?
我需要在Python中创建一个空数组,并在循环方法中填充它Python 如何在NumPy中声明和填充数组?,python,arrays,numpy,Python,Arrays,Numpy,我需要在Python中创建一个空数组,并在循环方法中填充它 data1=np.array([ra,dec,[]) 这是我的。ra和dec部分来自我导入的另一个阵列。我遇到的问题是填充其他列。 例子。假设要填充第三列,我将执行以下操作: for i in range (0,56): data1[i,3] = 32 我得到的错误是: IndexError:前面提到的第二行的索引无效 代码示例 此外,当我检查我创建的数组的形状时,它将出现在(3,)。我已经输入的数据是两列56行的数据 我在这
data1=np.array([ra,dec,[])
这是我的。ra和dec部分来自我导入的另一个阵列。我遇到的问题是填充其他列。
例子。假设要填充第三列,我将执行以下操作:
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循环。
因此,作为一个示例,这将执行您的循环:
data[:, 3] = 32
为您的问题提供单行解决方案;但是为了提高效率,最好先分配一个空数组,然后在相关部分中进行复制,这样可以避免构建虚拟列表。假设ra和dec是向量(1-d):
没有人提到的一件事是,在Python中,索引从0开始,而不是从1开始 这意味着,如果要查看数组的第三列,实际上应该寻址
[:,2]
,而不是[:,3]
祝你好运 我需要为每个元素输入一个唯一的值。如果应该输入的是一个iterable
I
中的值,那么我可以使用类似于data1[2,3]=32的东西来输入该值吗?您只需执行data1[:,3]=I
data1 = np.array([ra,dec,[32]*len(ra)])
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