这一部分的主要内容:
- numpy.mean()
- 排序的一些例子
- numpy.set_printoptions()
对于随机的3*3的二维数组,减去数组的每一行的平均值
a = np.random.randint(1, 10, (3,3))
print('Array a:')
print(a)
a =a - a.mean(axis=1, keepdims=True)
print('Result a:')
print(a)
输出:
Array a:
[[4 1 6]
[9 5 3]
[3 5 4]]
Result a:
[[ 0.33333333 -2.66666667 2.33333333]
[ 3.33333333 -0.66666667 -2.66666667]
[-1. 1. 0. ]]
注意numpy.mean()函数的调用格式:
numpy.mean(a, axis=None, dtype=None, out=None, keepdims= )
至于keepdims有什么作用,写个例子看一下就清楚了:
a = np.random.randint(1, 10, (3,3))
print('Array a:')
print(a)
print('keepdims = None')
print(a.mean(axis=1))
print('keepdims = True')
print(a.mean(axis=1, keepdims=True))
输出:
Array a:
[[7 8 1]
[4 2 9]
[6 7 4]]
keepdims = None
[5.33333333 5. 5.66666667]
keepdims = True
[[5.33333333]
[5. ]
[5.66666667]]
获得二维数组点积结果的对角线数组
a = np.random.randint(1, 10, (3,3))
b = np.random.randint(1, 10, (3,3))
print('Array a:')
print(a)
print('Array b:')
print(b)
print('Result:')
print(np.diag(a.dot(b)))
输出:
Array a:
[[6 4 2]
[3 2 5]
[6 1 6]]
Array b:
[[7 5 4]
[5 5 8]
[8 2 6]]
Result:
[78 35 68]
这里样例中给出了更快速的两种方法:
a = np.random.randint(1, 10, (3,3))
b = np.random.randint(1, 10, (3,3))
print('Array a:')
print(a)
print('Array b:')
print(b)
print('Result:')
print(np.diag(a.dot(b)))
print('Result2:')
print(np.sum(a * b.T, axis=1))
print('Result3:')
print(np.einsum("ij, ji->i", a, b))
输出:
Array a:
[[2 7 3]
[8 7 4]
[1 2 9]]
Array b:
[[4 5 8]
[9 7 2]
[5 4 3]]
Result:
[ 86 105 39]
Result2:
[ 86 105 39]
Result3:
[ 86 105 39]
找到随机一维数组中前p个最大值
a = np.random.randint(1, 10, 5)
p = 3 #前p个最大值
print('Original array: ')
print(a)
b = sorted(a)[::-1]
print('Result:')
print(b[:p])
参考答案:
a = np.random.randint(1, 10, 5)
p = 3
print('Original array: ')
print(a)
print('Result:')
print(a[np.argsort(a)[-p:]])
输出:
Original array:
[1 5 9 2 3]
Result:
[3 5 9]
使用了argsort()函数,好吧,其实我学的还是不熟练。。。
计算随机一维数组中每个元素的4次方数值
使用数组可以很方便地对数组中所有的元素统一处理
a = np.random.randint(1, 10, 5)
print('Original array:')
print(a)
print('Result:')
print(np.power(a, 4))
输出:
Original array:
[6 3 2 4 5]
Result:
[1296 81 16 256 625]
对于二维随机数组中的所有元素,保留2位小数
a = np.random.uniform(0, 3, (2,2))
print('Original array:')
print(a)
print('Result:')
print(np.floor(a*100)/100)
输出:
Original array:
[[2.06304809 2.73927541]
[1.09291699 0.25479813]]
Result:
[[2.06 2.73]
[1.09 0.25]]
参考答案:
a = np.random.uniform(0, 3, (2))
print('Original array:')
print(a)
print('Result:')
np.set_printoptions(precision=2)
print(a)
直接设置了输出格式,但是接下来所有的输出都会有效,变为输出两位小数
使用科学记数法输出Numpy数组
a = np.random.random([3,3])
print(a/1e3) # 注意这里是数字1而非字母l
使用Numpy找出百分位数(25%, 50%, 75%)
a = np.arange(15)
print('Array a:')
print(a)
print('Result:')
print(np.percentile(a, q=[25, 50, 75]))
输出:
Array a:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
Result:
[ 3.5 7. 10.5]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/116750.html