首页 > 解决方案 > 如何在开头的ndarray中插入数字(i + 1)?

问题描述

我在 npz 文件中有 ndarray,我试图在索引 0 处插入数字,插入的数字应该增加 1。下面是我的数组

data = [[[3.56, 7.94, 1.78], [8.23, 1.25, 4.80], [0.51, 8.23, 5.67], [9.56, 7.94, 2.78], [5.23, 7.25, 0.80],...]]

结果 ndarray 应该像

data = [[[0, 3.56, 7.94, 1.78], [1, 8.23, 1.25, 4.80], [2, 0.51, 8.23, 5.67], [3, 9.56, 7.94, 2.78], [4, 5.23, 7.25, 0.80],...]]

我是这个领域的新手,所以我需要一些帮助来解决这个问题。

此外,我尝试了这个解决方案,但它适用于一维数组。

我的示例代码是

import numpy as np

a = np.load('abc.npz')['data']
b = a.insert(a, 0+1) # I'm confused here
np.savez('new.npz', data=b)

寻找一些建议

标签: pythonnumpydata-structuresnumpy-ndarray

解决方案


你应该做:

import numpy as np

data = np.array([[[3.56, 7.94, 1.78], [8.23, 1.25, 4.80], [0.51, 8.23, 5.67], [9.56, 7.94, 2.78], [5.23, 7.25, 0.80]]])

res = np.insert(data, 0, np.arange(data.shape[1]), axis=2)
print(res)

输出

[[[0.   3.56 7.94 1.78]
  [1.   8.23 1.25 4.8 ]
  [2.   0.51 8.23 5.67]
  [3.   9.56 7.94 2.78]
  [4.   5.23 7.25 0.8 ]]]

从文档中,插入

在给定索引之前沿给定轴插入值。

所以基本上你需要指定数组 ( data)、索引 ( 0)、要插入的值 ( np.arange(data.shape[1])) 和轴。


推荐阅读