के साथ नए निर्देशांक को जानने वाले 3 डी सरणी के मूल्यों को ले जाएं, मैं Stackoverflow पर पहले से चर्चा की गई समस्या का विस्तार करना चाहता हूं। यह 2 डी numpy arrays से निपट रहा था और मैं एक 3-आयामी सरणी के साथ ऐसा करना चाहता हूँ।मास्क
मैं 2 डी सरणी के तत्वों को नए समन्वय में "स्थानांतरित" करना चाहता हूं जो 2 अन्य सरणी में संग्रहीत हैं। मैं इसे स्वचालित करने के लिए देख रहा हूं, क्योंकि वास्तव में मेरे सरणी बड़े हैं (400x200x100)। कुछ मूल्यों को उनके निर्देशांक नहीं मिलेंगे और उनका उपयोग नहीं किया जाएगा, इनमें से कुछ निर्देशांक मास्क किए गए हैं, जिन्हें मैंने मान 0 का उपयोग करके नीचे दिए गए उदाहरण में इंगित किया है। यदि समन्वय मास्क किया गया है, तो सरणी में तत्व जिन्हें मैं फिर से बदलना चाहता हूं इस्तेमाल किया गया।
import numpy as np
#My new coordinates in X and Y directions
mx = np.array([[[ 1., 2., 3., 4., 0.],
[ 1., 2., 3., 4., 0.],
[ 1., 2., 3., 4., 0.],
[ 1., 2., 3., 4., 0.],
[ 1., 2., 3., 4., 0.]],
[[ 1., 2., 3., 4., 0.],
[ 1., 2., 3., 4., 0.],
[ 1., 2., 3., 4., 0.],
[ 1., 2., 3., 4., 0.],
[ 1., 2., 3., 4., 0.]]])
my = np.array([[[ 0., 2., 2., 2., 2.],
[ 0., 3., 3., 3., 3.],
[ 0., 4., 4., 4., 4.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]],
[[ 0., 2., 2., 2., 2.],
[ 0., 3., 3., 3., 3.],
[ 0., 4., 4., 4., 4.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]]])
IRtest = np.array([[[-0.07383495, -0.08606554, -0.08480594, -0.08099556, -0.08218414],
[-0.07866761, -0.08373 , -0.08253587, -0.08106102, -0.08220205],
[-0.07727436, -0.08271511, -0.0807254 , -0.07832416, -0.08021686],
[-0.07612349, -0.08190446, -0.07996929, -0.07842754, -0.08024891],
[-0.07488144, -0.08150557, -0.08038229, -0.07895656, -0.07997815]],
[[-0.07383495, -0.08606554, -0.08480594, -0.08099556, -0.08218414],
[-0.07866761, -0.08373 , -0.08253587, -0.08106102, -0.08220205],
[-0.07727436, -0.08271511, -0.0807254 , -0.07832416, -0.08021686],
[-0.07612349, -0.08190446, -0.07996929, -0.07842754, -0.08024891],
[-0.07488144, -0.08150557, -0.08038229, -0.07895656, -0.07997815]]])
तो सरणी की उम्मीद लगता है:
array_expected = np.array([[[-0.08271511, -0.0807254 , -0.07832416, -0.08021686, 0],
[-0.08190446, -0.07996929, -0.07842754, -0.08024891, 0],
[-0.08150557, -0.08038229, -0.07895656, -0.07997815, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]],
[[-0.08271511, -0.0807254 , -0.07832416, -0.08021686, 0],
[-0.08190446, -0.07996929, -0.07842754, -0.08024891, 0],
[-0.08150557, -0.08038229, -0.07895656, -0.07997815, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]])
मैं कोड का हिस्सा मैं अपने पिछले पोस्ट के साथ मिल गया के साथ प्रयास करें।
b = np.zeros_like(IRtest)
for i in range(IRtest.shape[1]):
for j in range(IRtest.shape[2]):
for k in range(IRtest.shape[0]):
b[k, j, i] = IRtest[k,my[k,j,i],mx[k,j,i]]*(mx[k,j,i]!=-1)*(my[k,j,i]!=-1)
b
लेकिन इसके साथ ही टी परिणाम प्रतिसाद नहीं मैं उम्मीद:
array([[[-0.08606554, -0.0807254 , -0.07832416, -0.08021686, -0.07727436],
[-0.08606554, -0.07996929, -0.07842754, -0.08024891, -0.07612349],
[-0.08606554, -0.08038229, -0.07895656, -0.07997815, -0.07488144],
[-0.08606554, -0.08480594, -0.08099556, -0.08218414, -0.07383495],
[-0.08606554, -0.08480594, -0.08099556, -0.08218414, -0.07383495]],
[[-0.08606554, -0.0807254 , -0.07832416, -0.08021686, -0.07727436],
[-0.08606554, -0.07996929, -0.07842754, -0.08024891, -0.07612349],
[-0.08606554, -0.08038229, -0.07895656, -0.07997815, -0.07488144],
[-0.08606554, -0.08480594, -0.08099556, -0.08218414, -0.07383495],
[-0.08606554, -0.08480594, -0.08099556, -0.08218414, -0.07383495]]])
मैं शायद कुछ गलत, लेकिन क्यों पहले कॉलम भरा नहीं है अपेक्षित परिणाम में '0' के साथ? –
यह एक गलती थी कि मैं निर्देशांक और मूल्यों को बदलता हूं, मैंने 2 डी मामले के लिए अपनी पोस्ट के समान ही लिया! ;) – user3601754