Home > Net >  How to loop through 3d array with if statement python?
How to loop through 3d array with if statement python?

Time:07-02

I am trying to loop through a array with an if statement.

For example:

arr = np.arrange(125).reshape(5,5,5)
arr[0][1][:3]

I am trying to loop through the array and multiply by 0.1, if the values are arr[0][1][:3] else multiply by 1.

for a in arr:
  if a == arr[0][1][:3]:
    print(a*0.1)
  else:
    print(a*1)

CodePudding user response:

Are you trying to do:

out = np.where(np.isin(arr, arr[0][1][:3]), arr*0.1, arr)

or:

arr = arr.astype(float)
arr[np.where(np.isin(arr, arr[0][1][:3]))] *= 0.1

output:

array([[[  0. ,   1. ,   2. ,   3. ,   4. ],
        [  0.5,   0.6,   0.7,   8. ,   9. ],  # the 3 values 5/6/7 are modified
        [ 10. ,  11. ,  12. ,  13. ,  14. ],
        [ 15. ,  16. ,  17. ,  18. ,  19. ],
        [ 20. ,  21. ,  22. ,  23. ,  24. ]],

       [[ 25. ,  26. ,  27. ,  28. ,  29. ],
        [ 30. ,  31. ,  32. ,  33. ,  34. ],
        [ 35. ,  36. ,  37. ,  38. ,  39. ],
        [ 40. ,  41. ,  42. ,  43. ,  44. ],
        [ 45. ,  46. ,  47. ,  48. ,  49. ]],

       [[ 50. ,  51. ,  52. ,  53. ,  54. ],
        [ 55. ,  56. ,  57. ,  58. ,  59. ],
        [ 60. ,  61. ,  62. ,  63. ,  64. ],
        [ 65. ,  66. ,  67. ,  68. ,  69. ],
        [ 70. ,  71. ,  72. ,  73. ,  74. ]],

       [[ 75. ,  76. ,  77. ,  78. ,  79. ],
        [ 80. ,  81. ,  82. ,  83. ,  84. ],
        [ 85. ,  86. ,  87. ,  88. ,  89. ],
        [ 90. ,  91. ,  92. ,  93. ,  94. ],
        [ 95. ,  96. ,  97. ,  98. ,  99. ]],

       [[100. , 101. , 102. , 103. , 104. ],
        [105. , 106. , 107. , 108. , 109. ],
        [110. , 111. , 112. , 113. , 114. ],
        [115. , 116. , 117. , 118. , 119. ],
        [120. , 121. , 122. , 123. , 124. ]]])
  • Related