tf.where
tf.where(条件语句,真返回A,假返回B)
import tensorflow as tf
a = tf.constant([1, 2, 3, 1, 1])
b = tf.constant([0, 1, 3, 4, 5])
c = tf.where(tf.greater(a, b), a, b) # 若a>b,返回a对应位置的元素,否则返回b对应位置的元素
print("c:", c)
运行结果
np.random.RandomState.rand
np.random.RandomState.rand(维度)
返回一个[0.1)之间的随机数
import numpy as np
rdm = np.random.RandomState(seed=1) #seed=常数,每次生成随机数相同
a = rdm.rand() #返回一个随机标量
b = rdm.rand(2, 3) #返回维度为2行3列随机数矩阵
print("a:", a)
print("b:", b)
运行结果
np.vstack
将两个数组按垂直方向叠加
np.vstack(数组1,数组2)
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.vstack((a, b))
print("c:\n", c)
运行结果
np.mgrid[] .ravel() np.c_[]
三个经常一起使用,可以生成网格坐标点
np.mgrid[ 起始值:结束值:步长,起始值:结束值:步长,···]
返回若干组维度相同的等差数组,[起始值 结束值)前闭后开区间
x.ravel() 将x变为一维数组,“吧.前变量拉直”
np.c_[数组1,数组2,···] 使返回的间隔数值点配对
import numpy as np
import tensorflow as tf
# 生成等间隔数值点
x, y = np.mgrid[1:3:1, 2:4:0.5] #2行4列
# 将x, y拉直,并合并配对为二维张量,生成二维坐标点
grid = np.c_[x.ravel(), y.ravel()] #配对输出
print("x:\n", x)
print("y:\n", y)
print("x.ravel():\n", x.ravel())
print("y.ravel():\n", y.ravel())
print('grid:\n', grid)
运行结果
np.mgrid 用法
功能:返回多维结构,常见的如2D图形,3D图形
np.mgrid[ 第1维,第2维 ,第3维 , …]
第n维的书写形式为:
a:b:c #c表示步长,为实数表示间隔;该为长度为[a,b),左开右闭
或:
a:b:cj #cj表示步长,为复数表示点数;该长度为[a,b],左闭右闭
1)生成1D数组:
a=np.mgrid[-4:4:3j]
a
在[-4,4]区间内取3个值
返回:
array([-4., 0., 4.])
2)生成个2D矩阵:
mgrid[[1:3:3j, 4:5:2j]]
生成的是3*2的矩阵
import numpy as np
x, y = np.mgrid[1:3:3j, 4:5:2j]
x
x返回:
array([[1., 1.],
[2., 2.],
[3., 3.]])
输出y:
array([[4., 5.],
[4., 5.],
[4., 5.]])
所以表示的结果是:
[[(1,4),(1,5)]
[(2,4),(2,5)]
[(3,4),(3,5)]
]
结果值先y向右扩展,再x向下扩展
这也就解释了为什么x的运行结果是
因为y有4列,所以x也是4列
因为x有2行,所以y也有2行