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. ]]])