将较小的3D numpy数组放入较大的3D numpy数组

时间:2019-07-15 12:22:35

标签: python numpy

我本质上想做这个人正在做的事情,但是要使用3D:

How can I add small 2D array to larger array?

当前,我生成了一个大的空numpy数组:

BigArray = np.zeros((2048,2048,1000), np.float16)

然后,我尝试使用我链接的stackoverflow问题中显示的方法将数据添加到此数组中。

我要添加的数组是一个较小的numpy数组,其尺寸为100,100,100,并且在定义中心的X,Y,Z坐标列表中给出了位置。因此,我的代码如下:

SmallArray = np.random.random((100,100,100))
X = 1000
Y = 1000
Z = 500

BigArray([X-49:Y+50, Y-49:Y+50, Z-49:Z+50]) = SmallArray

但是我得到一个错误,第一个冒号是语法错误,我不确定为什么。

非常感谢您的帮助。

编辑:错别字。

2 个答案:

答案 0 :(得分:2)

只需删除括号:

BigArray[X-49:Y+50, Y-49:Y+50, Z-49:Z+50] = SmallArray

您还需要修复尺寸,因为它们不匹配,即:

BigArray[X-50:Y+50, Y-50:Y+50, Z-50:Z+50] = SmallArray

编辑: 另外,您在代码中有几次输入错误(例如使用zeroes代替zeros,而使用np.random代替np.random.random),但是我认为您对那些< / p>

答案 1 :(得分:0)

写一个非常简单的类似程序对我来说很有趣:

#!/usr/bin/env python3
# encoding: utf-8
#如果上述二列對調,卻使用./執行的話程式就會進入無窮迴圈
#此列就是註解
#template定義時間:2019/7/5 v0.2
import sys
print (f'Python版本號={sys.version}')

#---開始include---
import numpy as np

#---開始定義class---

#---開始定義function---

print ('sam說:---主程式開始---')
if __name__=='__main__':
    big_arr1 = np.random.rand(5,5,5)
    small_arr1 = np.zeros((3,3,3), np.float16)
    center_x = center_y = center_z = 2
    #center_x-1:center_x+2代表有center_x-1、center_x、center_x+1三個
    # center_y-1:center_y+2代表有center_y-1、center_y、center_y+1三個
    # center_z-1:center_z+2代表有center_z-1、center_z、center_z+1三個
    big_arr1[center_x-1:center_x+2,center_y-1:center_y+2,center_z-1:center_z+2]=small_arr1
    print(f'big_arr1={big_arr1}')
    print ('sam說:---程式結束---')

它显示结果:

C:\Users\sam_lin\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/sam_lin/PycharmProjects/untitled/t1.py
Python版本號=3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)]
sam說:---主程式開始---
big_arr1=[[[0.97776624 0.67305297 0.46804029 0.49918114 0.5827188 ]
  [0.13722586 0.74721955 0.4252602  0.0834001  0.46595479]
  [0.81273576 0.93105509 0.3550111  0.86397551 0.43013513]
  [0.9162833  0.73321085 0.30299702 0.88372877 0.08543336]
  [0.28145705 0.21005119 0.66785858 0.46601126 0.08057115]]

 [[0.96049458 0.92891106 0.59779765 0.24660834 0.28381255]
  [0.78940735 0.         0.         0.         0.79491548]
  [0.65879618 0.         0.         0.         0.22152894]
  [0.56392902 0.         0.         0.         0.543028  ]
  [0.14708571 0.16269789 0.37162561 0.19991273 0.65671269]]

 [[0.78414023 0.77322729 0.93637718 0.5180622  0.18265001]
  [0.68605786 0.         0.         0.         0.50407885]
  [0.98517971 0.         0.         0.         0.04644972]
  [0.93118566 0.         0.         0.         0.79937072]
  [0.97311219 0.47284717 0.82679315 0.76999545 0.82846718]]

 [[0.0707382  0.46587191 0.89547718 0.85520751 0.62759826]
  [0.4973629  0.         0.         0.         0.97606185]
  [0.99327387 0.         0.         0.         0.28557434]
  [0.31332736 0.         0.         0.         0.34476194]
  [0.12757201 0.90843887 0.68510409 0.98262188 0.48204498]]

 [[0.93682369 0.88788666 0.17488394 0.68499998 0.09336082]
  [0.39821201 0.39974341 0.14220433 0.55088245 0.09949949]
  [0.1348445  0.11631945 0.9976837  0.21023914 0.73043136]
  [0.91621389 0.4786832  0.66673538 0.37927733 0.92164015]
  [0.9259155  0.91651767 0.98076657 0.83919033 0.95723923]]]
sam說:---程式結束---

Process finished with exit code 0