python - 如何将 2D np 数组添加到 3D np 数组的前面?
问题描述
我有一个 3Dnumpy
数组,我想在它的前面添加一个 0 的 2D np 数组。
import numpy as np
A = np.zeros(3,3,3)
for i in np.arange(0,2):
for j in np.arange(0,2):
for k in np.arange(0,2):
A[i,j,k] = 10
print(A)
#returns:
[[[10. 10. 0.]
[10. 10. 0.]
[ 0. 0. 0.]]
[[10. 10. 0.]
[10. 10. 0.]
[ 0. 0. 0.]]
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]]
我想添加另一个数组 B 以便:
B = np.zeros(3,3)
print(B)
#returns
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
# add B to front of A
# B + A =
[[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
[[10. 10. 0.]
[10. 10. 0.]
[ 0. 0. 0.]]
[[10. 10. 0.]
[10. 10. 0.]
[ 0. 0. 0.]]
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]]
我试过 np.append(B,A) 但它返回一个二维数组。
解决方案
您可以使用numpy.vstack
并通过重塑您的阵列来做到这一点。例如:
import numpy as np
a = np.ones((3, 3, 3))
b = np.zeros((3, 3))
res = np.vstack((b.reshape(1, 3, 3), a))
顺便说一句,您可以A
更有效地创建数组:
import numpy as np
A = np.zeros((3,3,3))
A[:2, :2, :2] = 10
推荐阅读
- ssh - 两个 Mercurial 回购。在远程机器上——一个可以通过 ssh 克隆;另一个,不是
- laravel - 如何在 Laravel Vue 中沿侧引导程序使用 zurb 基础?
- flutter - 如何在 SliverChildListDelegate 中使用 FirestoreAnimatedList?
- android - E/CRASH(7870):信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR),故障地址 0000007c2f67f818
- amazon-web-services - AWS ASG 冷却期和扩展策略中的预热期有什么区别?
- javascript - 在 highcharts 散点图中添加自定义变量作为工具提示
- javascript - 指南针使用博览会记录磁力计的值?
- java - 使用拖放 android 在 PDF 上添加签名或图像(获取 x 和 y 坐标)
- ubuntu-18.04 - Chromium 在 Ubuntu 上构建失败://build_overrides/build.gni:5:1 处的错误:无法加载“/home/chromium/src/build/config/gclient_args.gni”
- vue.js - 如何使用 drf 和 vuejs 设置 github 身份验证?