势图和数据的快速挑选

势图

实例:
片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np
import matplotlib.pyplot as plt
def fun(x, y):
return x*np.exp((-x**2)-(y**2))
#创建一个画布 0表示编号,dpi表示像素,figsize表示画布大小
fig = plt.figure(0,dpi=140,figsize=(8,8))
#linspace将区间等分为500份
x = y = np.linspace(-2.0, 2.0, 500)
#meshgrid网格化处理(笛卡尔乘积),没有的话会导致数据过少(只有经过原点角平分线上的点)
X, Y = np.meshgrid(x, y)
#形成z坐标(x,y,z)构成了立体图形,为一个漏斗图
Z=fun(X,Y)
#创建一个画布形成两行两列的画框,像素150,figsize表示画布总大小被4个平分,画框形成的为数组通过索引获取
fig,axes1=plt.subplots(2,2,dpi=150,figsize=(10,10))
#[0,0]表示第一行第一个画框
axes1[0,0].imshow(Z)
axes1[0,1].imshow(Z,cmap = plt.cm.gray)
axes1[1,0].imshow(Z,cmap=plt.cm.cool)
axes1[1,1].imshow(Z,cmap=plt.cm.hot)
plt.show()

势图主要由很多的等势线构成,形成的三维立体与平面相切,形成的圈投影到二维平面形成等势线,众多的等势线构成了势图

np.where

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
np.where(condition,[x,y])快速找到想要的数据 如果条件为真返回x,为假返回y,如果条件加了[]会导致形成的数组维度增加
一.条件为单布尔值
a=23
np.where([type(a)==int],'整数','小数')[0] 返回的为数组通过索引取出来
二.条件为布尔矩阵
实例1:
def word_combination_games(positive_nr):
import numpy as np
import random
from functools import reduce
list1=['我','你','他','她','我们','你们','他们','她们']
random.shuffle(list1)
list2=['学习','研究','喜欢','厌恶','专研','抛弃','讨厌','练习']
random.shuffle(list2)
list3=['女人','美酒','香烟','金钱','Python','豪车','别墅','奢侈品']
random.shuffle(list3)
#创建信息列表并随机打乱
inf_ar1=inf_ar=np.column_stack((np.column_stack((np.array(list1),np.array(list2))),np.array(list3)))#把各列表信息以列的形式合并成二维数组
np.random.shuffle(inf_ar1)#随机打乱合并后二维数组
random_ar=[[True if np.random.rand()>=0.5 else False for i in range(3)]for j in range(8)]
#随机生成用作np.where条件的布尔矩阵。
a1=np.where(np.array(random_ar),inf_ar,inf_ar1)
#print(a1)
if positive_nr-1>7:
return '数字太大,超出信息列表长度'
else:
return reduce(lambda x,y:x+y,a1[positive_nr-1])
实例2:
np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]])
Out[15]:
array([[1, 8],
[3, 4]])
3:
array([[17, 15, 14, 15],
[17, 15, 18, 16],
[20, 16, 18, 18],
[15, 16, 19, 16]])
np.where(ar122>17)
Out[20]: (array([1, 2, 2, 2, 3], dtype=int64), array([2, 0, 2, 3, 2], dtype=int64))