首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的"m x n“维梯度式数组

Python中的"m x n“维梯度式数组
EN

Stack Overflow用户
提问于 2016-04-08 20:07:04
回答 1查看 227关注 0票数 2

我检查了使用python和numpy的梯度下降,但这并没有解决我的问题。

我正在尝试熟悉image-processing,并希望生成一些测试数组来处理Python中的问题。

是否有一种方法(如m x n )来创建一个数组,其中内部条目形成某种类型的梯度?

我用一个简单的方法来生成所需的输出。

不好意思,我对渐变这个词的概括,我把它用在它简单的意思,就是颜色的平滑过渡。

代码语言:javascript
复制
#!/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()

我尝试过np.gradient,但是它没有给我想要的输出。

代码语言:javascript
复制
#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,) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-08 20:12:09

代码语言:javascript
复制
A_placeholder[i,j] = m_i * n_j

任何类似的操作都可以使用广播业在numpy中表示。

代码语言:javascript
复制
A = np.arange(m)[:, None] * np.arange(n)[None, :]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36508446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档