我有两个7X7阵列(名为权重和距离),其中元素是浮点值 这是我正在使用的代码:
xmax = 7
ymax = 7
hist = []
for x in range(xmax):
for y in range(ymax):
for i in range (weights[x,y]):
hist = hist + [distances[x,y]]
print hist
当我尝试在范围内迭代(权重[x,y])时,由于权重[x,y]中的浮点值,我得到一个错误。我已经尝试创建不同的frange函数来迭代浮点值,但似乎没有任何效果。在运行代码之前,我不知道权重[x,y]的值是什么,所以我无法真正在frange函数中进行明确的启动和停止。
感谢任何帮助,谢谢!
答案 0 :(得分:0)
我相信你正在寻找这样的东西,但我可能错了。为了方便起见,我使用的是更小的数据集。
weights = [[1,2],[3,4]]
distance = [[9,8],[7,6]]
hist = []
for x in range(len(weights)):
new_list = []
for y in range(len(weights[x])):
new_list.append(weights[x][y] + distance[x][y])
hist.append(new_list)
print hist
这可能是一种更优雅的方式,但它应该有效。
答案 1 :(得分:0)
问题
范围只能接受整数。如果存在任何非整数类型,则需要转换int
。这包括浮点数,字符串,非整数类型的任何内容。 Python不会进行隐式转换。
>>> range(4.)
TypeError: range() integer end argument expected, got float.
>>> import numpy as np
>>> range(np.float(5))
TypeError: range() integer end argument expected, got float.
>>> range(int(4.))
[0, 1, 2, 3]
对您的代码的应用
对于您的代码,请执行以下操作:
for x in range(xmax):
for y in range(ymax):
for i in range(int(weights[x,y])):
hist = hist+[distances[x,y]]
print hist
注意显式int
调用以确保整数,而不是浮点数传递给range
函数?
Numpy Arange
如果您需要使用非整数值,请查看numpy.arange。
>>> np.arange(5.)
array([ 0., 1., 2., 3., 4.])
>>> np.arange(5.5)
array([ 0., 1., 2., 3., 4., 5.])
>>> np.arange(0, 5.5, 0.5)
array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. ])
它允许您使用浮点数,自定义步骤以及您自己的启动和停止。它只返回一个numpy数组而不是list / iterator。