Python 如何对numpy数组中的数值数据进行迭代分类?
我目前正在尝试使用随机数据生成一个numpy数组Python 如何对numpy数组中的数值数据进行迭代分类?,python,arrays,numpy,for-loop,Python,Arrays,Numpy,For Loop,我目前正在尝试使用随机数据生成一个numpy数组normal=np.round(np.random.normal(loc=0.0,scale=1000,size=(size)),1).astype(int),使用seed=np.random.seed(0),然后以等距方式对它们进行分类,例如: d=10 data = np.ndarray.flatten(np.asarray(normal,dtype=int)) interval = np.divide(np.max(data)-np.min
normal=np.round(np.random.normal(loc=0.0,scale=1000,size=(size)),1).astype(int)
,使用seed=np.random.seed(0)
,然后以等距方式对它们进行分类,例如:
d=10
data = np.ndarray.flatten(np.asarray(normal,dtype=int))
interval = np.divide(np.max(data)-np.min(data),d)
intervals = np.arange(np.min(data),np.max(data),interval,dtype=int)
for x in range(len(data)):
for z in range(d-1):
if data[x] >= intervals[z] and data[x] < intervals[z+1]:
data[x] = z
elif data[x] > intervals[-1]:
data[x] = d-1
d=10
data=np.ndarray.flatten(np.asarray(正常,dtype=int))
间隔=np.除法(np.最大值(数据)-np.最小值(数据),d)
区间=np.arange(np.min(数据),np.max(数据),区间,数据类型=int)
对于范围内的x(len(数据)):
对于范围(d-1)内的z:
如果数据[x]>=区间[z]和数据[x]<区间[z+1]:
数据[x]=z
elif数据[x]>间隔[-1]:
数据[x]=d-1
理想情况下,当我执行此操作时,我希望数据数组中的值被0-9的值替换,但每当我运行此操作时,我都会得到4-8的值。有人知道我可能做错了什么,或者如何改进这个方法吗
间隔是要使用的增量值,间隔是各个间隔的实际边界值。在检查正确间隔时,您正在覆盖数据。在继续操作时引入一个不同的数据数组,保持源数据不变:
import numpy as np
import matplotlib.pyplot as plt
size = 1000
seed = np.random.seed(0)
normal = np.round(np.random.normal(loc=0.0, scale=1000, size=(size)), 1).astype(int)
d=10
data = np.ndarray.flatten(np.asarray(normal, dtype=int))
interval = np.divide(np.max(data)-np.min(data), d)
intervals = np.arange(np.min(data), np.max(data), interval, dtype=int)
data_d = np.zeros_like(data) # added
for x in range(len(data)):
for z in range(d-1):
if data[x] >= intervals[z] and data[x] < intervals[z+1]: # check original data
data_d[x] = z # fill new array so not to overwrite
elif data[x] > intervals[-1]:
data_d[x] = d-1
plt.hist(data_d)
plt.show()
将numpy导入为np
将matplotlib.pyplot作为plt导入
尺寸=1000
seed=np.random.seed(0)
normal=np.round(np.random.normal(loc=0.0,scale=1000,size=(size)),1)。aType(int)
d=10
data=np.ndarray.flatten(np.asarray(正常,dtype=int))
间隔=np.除法(np.最大值(数据)-np.最小值(数据),d)
区间=np.arange(np.min(数据),np.max(数据),区间,数据类型=int)
data_d=np。添加了类零(data)
对于范围内的x(len(数据)):
对于范围(d-1)内的z:
如果数据[x]>=区间[z]和数据[x]<区间[z+1]:#检查原始数据
data_d[x]=z#填充新数组以避免覆盖
elif数据[x]>间隔[-1]:
数据d[x]=d-1
历史记录(数据)
plt.show()
生成(所取的所有值):
在检查正确的间隔时,您正在覆盖数据。在继续操作时引入一个不同的数据数组,保持源数据不变:
import numpy as np
import matplotlib.pyplot as plt
size = 1000
seed = np.random.seed(0)
normal = np.round(np.random.normal(loc=0.0, scale=1000, size=(size)), 1).astype(int)
d=10
data = np.ndarray.flatten(np.asarray(normal, dtype=int))
interval = np.divide(np.max(data)-np.min(data), d)
intervals = np.arange(np.min(data), np.max(data), interval, dtype=int)
data_d = np.zeros_like(data) # added
for x in range(len(data)):
for z in range(d-1):
if data[x] >= intervals[z] and data[x] < intervals[z+1]: # check original data
data_d[x] = z # fill new array so not to overwrite
elif data[x] > intervals[-1]:
data_d[x] = d-1
plt.hist(data_d)
plt.show()
将numpy导入为np
将matplotlib.pyplot作为plt导入
尺寸=1000
seed=np.random.seed(0)
normal=np.round(np.random.normal(loc=0.0,scale=1000,size=(size)),1)。aType(int)
d=10
data=np.ndarray.flatten(np.asarray(正常,dtype=int))
间隔=np.除法(np.最大值(数据)-np.最小值(数据),d)
区间=np.arange(np.min(数据),np.max(数据),区间,数据类型=int)
data_d=np。添加了类零(data)
对于范围内的x(len(数据)):
对于范围(d-1)内的z:
如果数据[x]>=区间[z]和数据[x]<区间[z+1]:#检查原始数据
data_d[x]=z#填充新数组以避免覆盖
elif数据[x]>间隔[-1]:
数据d[x]=d-1
历史记录(数据)
plt.show()
生成(所取的所有值):