2016-04-08 6 views
2

私はチェックアウトしました gradient descent using python and numpy 私の問題は解決しませんでした。Pythonの「m x n」ディメンションスタイルの配列

私はimage-processingに慣れ親しんでおり、いくつかのテスト配列を生成してPythonで混乱させたいと思っています。

内部エントリが何らかのタイプのグラデーションを形成するm x n配列を作成するメソッド(np.arangeなど)はありますか?

私は、望ましい出力を生成するための素朴な方法の例を示しました。

私の一般的な用語であるグラジエントを除いて、色でスムーズに移行するという単純な意味で使用しています。

#!/usr/bin/python 
import numpy as np 
import matplotlib.pyplot as plt 

#Set up parameters 
m = 15 
n = 10 
A_placeholder = np.zeros((m,n)) 
V_m = np.arange(0,m).astype(np.float32) 
V_n = np.arange(0,n).astype(np.float32) 

#Iterate through combinations 
for i in range(m): 
    m_i = V_m[i] 
    for j in range(n): 
     n_j = V_n[j] 
     A_placeholder[i,j] = m_i * n_j #Some combination 

#Relabel 
A_gradient = A_placeholder 
A_placeholder = None 

#Print data 
print A_gradient 
#[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] 
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] 
[ 0. 2. 4. 6. 8. 10. 12. 14. 16. 18.] 
[ 0. 3. 6. 9. 12. 15. 18. 21. 24. 27.] 
[ 0. 4. 8. 12. 16. 20. 24. 28. 32. 36.] 
[ 0. 5. 10. 15. 20. 25. 30. 35. 40. 45.] 
[ 0. 6. 12. 18. 24. 30. 36. 42. 48. 54.] 
[ 0. 7. 14. 21. 28. 35. 42. 49. 56. 63.] 
[ 0. 8. 16. 24. 32. 40. 48. 56. 64. 72.] 
[ 0. 9. 18. 27. 36. 45. 54. 63. 72. 81.] 
[ 0. 10. 20. 30. 40. 50. 60. 70. 80. 90.] 
[ 0. 11. 22. 33. 44. 55. 66. 77. 88. 99.] 
[ 0. 12. 24. 36. 48. 60. 72. 84. 96. 108.] 
[ 0. 13. 26. 39. 52. 65. 78. 91. 104. 117.] 
[ 0. 14. 28. 42. 56. 70. 84. 98. 112. 126.]] 

#Show Image 
plt.imshow(A_gradient) 
plt.show() 

enter image description here

私はnp.gradientを試みたが、それは私に所望の出力を与えるものではありませんでした。

#print np.gradient(np.array([V_m,V_n])) 
#Traceback (most recent call last): 
# File "Untitled.py", line 19, in <module> 
#  print np.gradient(np.array([V_m,V_n])) 
# File "/Users/Mu/anaconda/lib/python2.7/site-packages/numpy/lib/function_base.py", line 1458, in gradient 
#  out[slice1] = (y[slice2] - y[slice3]) 
#ValueError: operands could not be broadcast together with shapes (10,) (15,) 

答えて

2
A_placeholder[i,j] = m_i * n_j 

は、そのような任意の操作を使用してnumpyの中で発現させることができるbroadcasting

A = np.arange(m)[:, None] * np.arange(n)[None, :] 
関連する問題