reshape()函数经常用做一维数组维度的变化,也就是将一维数组变化成为指定维度的矩阵。order是指不同的索引规则,一般默认C,按照行进行运算。
示例:
print np.reshape(np.arange(10), (2, 5))
[[0 1 2 3 4]
[5 6 7 8 9]]
ravel函数是将矩阵数据进行降维操作,例如,将二维的数据降成一维的
示例:
data = np.reshape(np.arange(10), (2, 5))
print data.reshape(-1)
print data.ravel()
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
该成员函数也是用于降维使用的,起作用与ravel函数类似
示例:
data = np.reshape(np.arange(10), (2, 5))
print data.flatten()
[0 1 2 3 4 5 6 7 8 9]
与ravel函数的区别:ravel是原始数据的视图,对其进行修改之后原始数据也将会被修改;而flatten函数则返回原始数据的拷贝,对其进行修改并不会对原始数据产生影响。
示例:
# ravel函数
data = np.reshape(np.arange(10), (2, 5))
data1 = data.ravel()
data1[0] = 100
print data
[[100 1 2 3 4]
[ 5 6 7 8 9]]
# flatten函数
data = np.reshape(np.arange(10), (2, 5))
data1 = data.flatten()
data1[0] = 100
print data
[[0 1 2 3 4]
[5 6 7 8 9]]
这里使用两个测试用矩阵:
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
示例:
print np.hstack((a, b))
print np.concatenate((a, b), axis=1)
[[1 2 5 6]
[3 4 7 8]]
示例:
print np.vstack((a, b))
print np.concatenate((a, b), axis=0)
[[1 2]
[3 4]
[5 6]
[7 8]]
示例:
print np.dstack((a, b))
[[[1 5]
[2 6]]
[[3 7]
[4 8]]]
这里使用如下数据进行测试:
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
在理解了2.1节中的水平组合之后,其逆过程就很容易理解了。
示例:将示例矩阵分为等分成为三份
print np.hsplit(a, 3)
[array([[1],
[4],
[7]]), array([[2],
[5],
[8]]), array([[3],
[6],
[9]])]
其过程类似上面的过程
示例:
print np.vsplit(a, 3)
[array([[1, 2, 3]]), array([[4, 5, 6]]), array([[7, 8, 9]])]
示例:注意,深度分割只对三维以上矩阵有效
print np.dsplit(np.arange(27).reshape((3, 3, 3)), 3)
[array([[[ 0],
[ 3],
[ 6]],
[[ 9],
[12],
[15]],
[[18],
[21],
[24]]]), array([[[ 1],
[ 4],
[ 7]],
[[10],
[13],
[16]],
[[19],
[22],
[25]]]), array([[[ 2],
[ 5],
[ 8]],
[[11],
[14],
[17]],
[[20],
[23],
[26]]])]
这里测试用的数据还是3节中的数据
print np.shape(a)
(3, 3)
print a.dtype
int64
print a.size
9
print a.itemsize
8
print a.nbytes
72
Python之数组拼接,组合,连接