numpy np.repeat 与 np.tile的区别, numpy.ravel()函数

  • 二者执行的是均是复制操作;
  • np.repeat:复制的是多维数组的每一个元素
  • np.tile:复制的是多维数组本身

1. np.repeat  tile()

x = np.arange(1, 5).reshape(2, 2)
print x
print np.repeat(x, 2, axis=1) #axis=1,表示在行方向上,axis=0 在列方向上
print np.repeat(x, 2, axis=0) #axis=1,表示在行方向上,axis=0 在列方向上
print np.repeat(x, 2)
print np.tile(x,(5,1)) #构造5 X 1个copy
print np.tile(x,(3,2)) #构造3 X 2个copy
print np.tile(x,(5,))  #与 print np.tile(x,5) 结果一样
print np.tile(x,5)

结果:
[[1 2]
 [3 4]]
[[1 1 2 2]
 [3 3 4 4]]
[[1 2]
 [1 2]
 [3 4]
 [3 4]]
[1 1 2 2 3 3 4 4]
[[1 2]
 [3 4]
 [1 2]
 [3 4]
 [1 2]
 [3 4]
 [1 2]
 [3 4]
 [1 2]
 [3 4]]
[[1 2 1 2]
 [3 4 3 4]
 [1 2 1 2]
 [3 4 3 4]
 [1 2 1 2]
 [3 4 3 4]]
[[1 2 1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4 3 4]]
[[1 2 1 2 1 2 1 2 1 2]
 [3 4 3 4 3 4 3 4 3 4]]

2、 numpy.ravel()函数
x = np.array([[1, 2], [3, 4]])
y = np.array([[1, 2], [3, 5]])
z = np.array([[1, 2], [44, 100]])
acc = x.ravel() == y.ravel()
acc1 = x.ravel() == z.ravel()
acc2 = x==y
print acc.sum()
print acc1.sum()
print acc2

结果:
3
2
[[ True  True]
 [ True False]]
注意:acc.sum()统计的是x,y 两个数组中相同的值的个数


你可能感兴趣的:(python,学习)