您的位置:首页 > 编程语言

机器之心之NumPy能力大评测:这里有70道测试题代码实现和函数解释31-35

2018-03-21 22:25 501 查看
如何找到 NumPy 数组的百分数?percentile scores

import numpy as np
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
sepallength = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0])
xmy = np.percentile(sepallength, q=[5, 95])
print(xmy)
[ 4.6    7.255]

numpy.percentile(a, q, axis)
1.  a 输入数组
2.  q 要计算的百分位数,在 0 ~ 100 之间
3.  axis 沿着它计算百分位数的轴   ,二维取值0,1


如何在数组的随机位置插入值?

import numpy as np
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_2d = np.genfromtxt(url, delimiter=',', dtype='object')
i,j= np.where(iris_2d)
np.random.seed(100)
iris_2d[np.random.choice((i), 20), np.random.choice((j), 20)] =  np.nan
print(iris_2d)
[b'5.4' b'3.7' b'1.5' nan b'Iris-setosa']

第一种用法
np.where(conditions,x,y)
if (condituons成立):
  数组变x
else:
  数组变y
第二种用法
where(conditions)
相当于给出数组的下标
iris_2d[np.random.choice((i), 20), np.random.choice((j), 20)]
可以从一个int数字或1维array里随机选取内容,并将选取结果放入n维array中返回。
choice(a[, size, replace, p])-->从一维数组a中以概率p抽取抽取元素,形成size形状新的数组,replace表示是否可以重用元素,默认为True,第二个参数表示选几个default是1个返回数字,
np.nan
NaN(not a number),在数学表示上表示一个无法表示的数

np.random.seed(100)
iris_2d[np.random.randint(150, size=20), np.random.randint(4, size=20)] = np.nan
# Print first 10 rows
print(iris_2d[:10])

numpy.random.randint
生成在半开半闭区间[low,high)上离散均匀分布的整数值;若high=None,则取值区间变为[0,low)
low、high、size三个参数。默认high是None,如果只有low,那范围就是[0,low)。如果有high,范围就是[low,high)。

1、获取下标
2、随机选20对下标
3、对20对下标赋数值


如何在 NumPy 数组中找出缺失值的位置?

import numpy as np
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3])
iris_2d[np.random.randint(150, size=20), np.random.randint(4, size=20)] = np.nan
print("Number of missing values: \n", np.isnan(iris_2d[:, :]).sum())
print("Position of missing values: \n", np.where(np.isnan(iris_2d[:, :])))
Number of missing values: 20
Position of missing values:
(array([  0,   8,  20,  34,  44,  57,  66,  67,  73,  90,  92,  93,  94,119, 127, 133, 138, 140, 144, 146]), array([2, 0, 2, 2, 0, 0, 2, 2, 0, 2, 0, 3, 3, 1, 1, 3, 1, 1, 2, 2]))


如何基于两个或以上条件过滤 NumPy 数组?

过滤 iris_2d 中满足 petallength(第三列)> 1.5 和 sepallength(第一列)< 5.0 的行。

import numpy as np
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3])
condition = (iris_2d[:, 2] > 1.5) & (iris_2d[:, 0] < 5.0)
print(iris_2d[condition])
[[ 4.8  3.4  1.6  0.2]
[ 4.8  3.4  1.9  0.2]
[ 4.7  3.2  1.6  0.2]
[ 4.8  3.1  1.6  0.2]
[ 4.9  2.4  3.3  1. ]
[ 4.9  2.5  4.5  1.7]]


如何在 NumPy 数组中删除包含缺失值的行?选择 iris_2d 中不包含 nan 值的行。

import numpy as np
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3])
iris_2d[np.random.randint(150, size=20), np.random.randint(4, size=20)] = np.nan
any_nan_in_row = np.array([~np.any(np.isnan(row)) for row in iris_2d])
iris_2d[any_nan_in_row][:5]
print(iris_2d[any_nan_in_row][:5])

iris_2d[np.sum(np.isnan(iris_2d), axis = 1) == 0][:5]
print(np.isnan(iris_2d))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐