我在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],...]]
我是这个领域的新手,所以我想得到一些帮助来解决这个问题。
此外,我尝试过这种解决方案,但它适用于1D阵列。
我的样本代码是
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)
寻找一些建议
您应该做:
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])
(和轴。
我已经解决了我的问题。当丹尼·梅塞霍帮助我时,我从他那里得到了一些想法。
以下是解决方案
data = data.tolist()
for index, d in enumerate(data[:]): # slicing
d.insert(0, index) # insert numbers in 0 index of every list.
我们的想法是将ndarray转换为list,然后在序列化后将其保存在npz或json中