【发布时间】:2014-06-13 13:17:14
【问题描述】:
from numpy import *
import time
import pylab as plt
a=zeros([10,10])
b=ones([10,10])
dx=dy=0.1
x,y = mgrid[:1:dx,:1:dy]
def add(a,b):
a[1:-1,1:-1]=a[1:-1,1:-1]+b[1:-1,1:-1]
data=0
print(data)
for i in range(4):
#data.append(a)
print (a)
add(a,b)
上面是说明我遇到的问题的说明代码。 我的代码打印的是:
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
[ 0. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
[ 0. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
[ 0. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
[ 0. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
[ 0. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
[ 0. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
[ 0. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 2. 2. 2. 2. 2. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 2. 2. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 2. 2. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 2. 2. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 2. 2. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 2. 2. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 2. 2. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 2. 2. 2. 2. 2. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 3. 3. 3. 3. 3. 3. 3. 3. 0.]
[ 0. 3. 3. 3. 3. 3. 3. 3. 3. 0.]
[ 0. 3. 3. 3. 3. 3. 3. 3. 3. 0.]
[ 0. 3. 3. 3. 3. 3. 3. 3. 3. 0.]
[ 0. 3. 3. 3. 3. 3. 3. 3. 3. 0.]
[ 0. 3. 3. 3. 3. 3. 3. 3. 3. 0.]
[ 0. 3. 3. 3. 3. 3. 3. 3. 3. 0.]
[ 0. 3. 3. 3. 3. 3. 3. 3. 3. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
但是代码输出:
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 4. 4. 4. 4. 4. 4. 4. 4. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
那么这种问题有解决办法吗?
谢谢~
有人提供了以下解决方案:
from numpy import*
import time
import pylab as plt
dx=dy=0.1
x,y = mgrid[:1:dx,:1:dy]
data=[]
for i in range(4):
a=zeros([10,10])
b=ones([10,10])
a[1:-1,1:-1] = b[1:-1,1:-1]*i
data.append(a)
for k in range(4):
print(data[k])
但是,这不是解决此类问题的典型方法。那是因为如果我使用的[add]函数或者示例中的a,b数组发生变化,这个解决方案将失去效果
【问题讨论】:
-
不清楚你在问什么。我没有得到您替换 [[0. 4. 4. .....]] 使用任一代码 sn-p.您的代码的期望输出是什么?
-
您的第一个代码在我的系统上完全符合您的预期。您确定您正在运行您发布的相同代码吗?
-
谢谢各位,问题已经解决了。下面的答案是一个很好的解决方案。 :)
标签: python numpy storage multidimensional-array