Rob*_*ith 3 python arrays numpy division
假设你有这个数组:
In [29]: a = array([[10, 20, 30, 40, 50], [14, 28, 42, 56, 70], [18, 36, 54, 72, 90]])
Out[30]: a
array([[ 0, 0, 0, 0, 0],
[14, 28, 42, 56, 70],
[18, 36, 54, 72, 90]])
Run Code Online (Sandbox Code Playgroud)
现在将第三行除以第一行(使用来自未来的导入部门)
In [32]: a[0]/a[2]
Out[32]: array([ 0.55555556, 0.55555556, 0.55555556, 0.55555556, 0.55555556])
Run Code Online (Sandbox Code Playgroud)
现在对循环中的每一行执行相同的操作:
In [33]: for i in range(3):
print a[i]/a[2]
[ 0.55555556 0.55555556 0.55555556 0.55555556 0.55555556]
[ 0.77777778 0.77777778 0.77777778 0.77777778 0.77777778]
[ 1. 1. 1. 1. 1.]
Run Code Online (Sandbox Code Playgroud)
一切看起来都合适.但现在,将第一个数组a [i]/a [2]分配给[i]:
In [35]: for i in range(3):
a[i]/=a[2]
....:
In [36]: a
Out[36]:
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)
好吧,没问题.事实证明这是设计的.相反,我们应该这样做:
In [38]: for i in range(3):
a[i] = a[i]/a[2]
....:
In [39]: a
Out[39]:
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)
但这不起作用.为什么以及如何解决它?
提前致谢.
| 归档时间: |
|
| 查看次数: |
3173 次 |
| 最近记录: |