python - 如何在开头的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)
寻找一些建议
解决方案
你应该做:
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])
) 和轴。
推荐阅读
- testing - BrowserStack cypress Run > cypress-cucumber-preprocessor 依赖图 + cypress 文件夹出错
- android - Jetpack Compose 折叠工具栏
- java - 可以从多个模块访问该包(在 Eclipse 中使用 SAX 的错误修复)
- python - 在python中使用solve()函数引发异常错误
- image-processing - 如何使用 numpy 创建 am * n * 3 数组
- dictionary - clojure 中的地图给出了意想不到的结果
- ocaml - 什么“这不是一个函数;它不能被应用”错误是什么意思?
- r - 递归地将具有多个参数的函数应用于R中的列表
- javascript - 如何使用模块导出直接返回对象?
- elasticsearch - 如何在elasticsearch中实现搜索