Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对numpy数组中的数值数据进行迭代分类?_Python_Arrays_Numpy_For Loop - Fatal编程技术网

Python 如何对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

我目前正在尝试使用随机数据生成一个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(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()
生成(所取的所有值):