在 python 3.6.2 中,对于大于 1 的值没有得到完整的浮点除法
Not getting full float division for values above 1. in python 3.6.2
我正在尝试用一些值填充 np.zeros
二维数组,然后使用每行中的最大值对这些值进行归一化。
我使用 max()
函数将该行的每个值除以最大值。尽管我对数组中的值进行了适当的浮点除法,直到最大值,但 Python 仅 returns 1.
数组中最大值之后的值。
在这种情况下我怎样才能得到正确的值?
我正在使用 Python 3.6.2 和 jupyter notebook。
import numpy as np
from matplotlib import pyplot as plt
np.set_printoptions(threshold=np.inf) #for printing full array
l1 = np.zeros((5,10))
l2 = np.arange(500)
for j in range(len(l1[:,0])):
for i in range(len(l1[0,:])):
if i<(j+(len(l1[0,:])/2)):
l1[j,i] = l1[j,i-1]+1
if i>(j+(len(l1[0,:])/2)-1):
l1[j,i] = l1[j,i-1]-1
for j in range(len(l1[:,0])):
for i in range(len(l1[0,:])):
l1[j,i] = l1[j,i]/(max(l1[j,:]))
fig,ax = plt.subplots(figsize = (5,25))
ax.imshow(l1)
ax.set_aspect('5')
print(l1[0,:])
我得到的结果是:
[0.2 0.4 0.6 0.8 1. 1. 1. 1. 1. 0. ]
未经归一化的数组:
[1. 2. 3. 4. 5. 4. 3. 2. 1. 0.]
感谢 user2357112supportsMonica 和 mkrieger1,我发现了我在代码中的错误。当 for 循环编辑数组时,最大值会发生变化。解决方案是通过更改代码实现的,如下所示:
import numpy as np
from matplotlib import pyplot as plt
np.set_printoptions(threshold=np.inf) #for printing full array
l1 = np.zeros((10,20))
l2 = np.arange(500)
for j in range(len(l1[:,0])):
for i in range(len(l1[0,:])):
if i<(j+(len(l1[0,:])/2)):
l1[j,i] = l1[j,i-1]+1
if i>(j+(len(l1[0,:])/2)-1):
l1[j,i] = l1[j,i-1]-1
for j in range(len(l1[:,0])):
l1[j,:] = l1[j,:]/(max(l1[j,:]))
fig,ax = plt.subplots(figsize = (5,25))
ax.imshow(l1)
ax.set_aspect('1')
我正在尝试用一些值填充 np.zeros
二维数组,然后使用每行中的最大值对这些值进行归一化。
我使用 max()
函数将该行的每个值除以最大值。尽管我对数组中的值进行了适当的浮点除法,直到最大值,但 Python 仅 returns 1.
数组中最大值之后的值。
在这种情况下我怎样才能得到正确的值?
我正在使用 Python 3.6.2 和 jupyter notebook。
import numpy as np
from matplotlib import pyplot as plt
np.set_printoptions(threshold=np.inf) #for printing full array
l1 = np.zeros((5,10))
l2 = np.arange(500)
for j in range(len(l1[:,0])):
for i in range(len(l1[0,:])):
if i<(j+(len(l1[0,:])/2)):
l1[j,i] = l1[j,i-1]+1
if i>(j+(len(l1[0,:])/2)-1):
l1[j,i] = l1[j,i-1]-1
for j in range(len(l1[:,0])):
for i in range(len(l1[0,:])):
l1[j,i] = l1[j,i]/(max(l1[j,:]))
fig,ax = plt.subplots(figsize = (5,25))
ax.imshow(l1)
ax.set_aspect('5')
print(l1[0,:])
我得到的结果是:
[0.2 0.4 0.6 0.8 1. 1. 1. 1. 1. 0. ]
未经归一化的数组:
[1. 2. 3. 4. 5. 4. 3. 2. 1. 0.]
感谢 user2357112supportsMonica 和 mkrieger1,我发现了我在代码中的错误。当 for 循环编辑数组时,最大值会发生变化。解决方案是通过更改代码实现的,如下所示:
import numpy as np
from matplotlib import pyplot as plt
np.set_printoptions(threshold=np.inf) #for printing full array
l1 = np.zeros((10,20))
l2 = np.arange(500)
for j in range(len(l1[:,0])):
for i in range(len(l1[0,:])):
if i<(j+(len(l1[0,:])/2)):
l1[j,i] = l1[j,i-1]+1
if i>(j+(len(l1[0,:])/2)-1):
l1[j,i] = l1[j,i-1]-1
for j in range(len(l1[:,0])):
l1[j,:] = l1[j,:]/(max(l1[j,:]))
fig,ax = plt.subplots(figsize = (5,25))
ax.imshow(l1)
ax.set_aspect('1')