我本质上想做这个人正在做的事情,但是要使用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
但是我得到一个错误,第一个冒号是语法错误,我不确定为什么。
非常感谢您的帮助。
编辑:错别字。
答案 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