Numpy入门笔记第二天

时间:2023-03-09 05:41:57
Numpy入门笔记第二天

# 数组的组合
import numpy as np
arr1 = np.arange(5)
arr2 = np.arange(3)
print arr1
print arr2
[0 1 2 3 4]
[0 1 2]
print np.hstack((arr1, arr2))
[0 1 2 3 4 0 1 2]
arr3 = np.array([2, 3, 4])
print np.vstack((arr3, arr2))
[[2 3 4]
 [0 1 2]]
print np.dstack((arr2, arr3)) # 这里是一一对应,形成新的数组
[[[0 2]
  [1 3]
  [2 4]]]
print np.column_stack((arr2, arr3)) # 这里是把原数组当列组合
print np.row_stack((arr2, arr3))
[[0 2]
 [1 3]
 [2 4]]
[[0 1 2]
 [2 3 4]]
# 数组分割
arr4 = np.arange(15).reshape(3, 5)
print arr4
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
# 水平分割
print np.hsplit(arr4, 5)
[array([[ 0],
       [ 5],
       [10]]), array([[ 1],
       [ 6],
       [11]]), array([[ 2],
       [ 7],
       [12]]), array([[ 3],
       [ 8],
       [13]]), array([[ 4],
       [ 9],
       [14]])]
# 垂直分割
print np.vsplit(arr4, 3)
[array([[0, 1, 2, 3, 4]]), array([[5, 6, 7, 8, 9]]), array([[10, 11, 12, 13, 14]])]
# 深度分割
arr5 = np.arange(27).reshape(3, 3, 3)
print arr5
print np.dsplit(arr5, 3)
[[[ 0  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]]]
[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]]])]
# 数组维数
print "arr5的维数", arr5.ndim
arr5的维数 3
# 数组元素个数
print "arr5的元素个数", arr5.size
arr5的元素个数 27
# 虚数数组
arr6 = np.array([1.+1.j, 2.-3.j])
print arr6
print arr6.real
print arr6.imag
[1.+1.j 2.-3.j]
[1. 2.]
[ 1. -3.]
# 数组展开
arr7 = np.arange(15).reshape(3, 5)
print arr7
print arr7.flat[:]
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
# 开根号
print np.sqrt(arr7)
[[0.         1.         1.41421356 1.73205081 2.        ]
 [2.23606798 2.44948974 2.64575131 2.82842712 3.        ]
 [3.16227766 3.31662479 3.46410162 3.60555128 3.74165739]]
# 条件式
arr8 = np.array([1999, 12, 3])
arr9 = np.array([1999, 5, 25])
cond = arr8 >= arr9
print arr8
print arr9
print cond
print np.where(cond, arr8, arr9)
[1999   12    3]
[1999    5   25]
[ True  True False]
[1999   12   25]
# 求和
print arr7.sum()
print "前几项和", arr7.cumsum()
print "前几项积", arr7.cumprod()
# 平均
print "按行求平均数", arr7.mean(axis = 1)
print "按列求平均", arr7.mean(axis = 0)
print "全部元素平均值", arr7.mean()
105
前几项和 [  0   1   3   6  10  15  21  28  36  45  55  66  78  91 105]
前几项积 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
按行求平均数 [ 2.  7. 12.]
按列求平均 [5. 6. 7. 8. 9.]
全部元素平均值 7.0
# 布尔数组
arrV = np.arange(15)
arrVI = arrX < 7
print arrVI
print "是否存在True", arrVI.any()
print "是否全True", arrVI.all()
[ True  True  True  True  True  True  True False False False False False
 False False False]
是否存在True True
是否全True False
# 排序
arrVII = np.random.randn(8)
print arrVII
arrVII.sort()
print arrVII
[-0.92985535 -0.84881494 -0.7441014   1.20441486  0.86034497  0.91084961
 -0.87441653  1.91787882]
[-0.92985535 -0.87441653 -0.84881494 -0.7441014   0.86034497  0.91084961
  1.20441486  1.91787882]
# 按列排序
arrVIII = np.random.randn(3, 5)
print arrVIII
arrVIII.sort(0)
print arrVIII
[[ 1.70201094  0.34485293 -1.10294569  1.31655267  1.87062538]
 [ 0.45357185  0.50472001  0.41922422  0.56049801 -0.4344195 ]
 [-0.50074532 -0.45866882  0.19640063 -1.16866863 -0.70844226]]
[[-0.50074532 -0.45866882 -1.10294569 -1.16866863 -0.70844226]
 [ 0.45357185  0.34485293  0.19640063  0.56049801 -0.4344195 ]
 [ 1.70201094  0.50472001  0.41922422  1.31655267  1.87062538]]
# 去重并排序
arrIX = np.array([2, 3, 2, 1, 3, 2, 1])
print np.unique(arrIX)
[1 2 3]
# 矩阵操作
matrix1 = np.arange(16).reshape(4, 4)
matrix2 = np.random.randn(4, 4)
print matrix1
print matrix2
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 6.71869322e-01  1.75764408e+00  2.52124525e-02  7.89585893e-01]
 [ 1.39467620e+00 -1.34821488e+00 -4.44994744e-01 -7.90621039e-01]
 [ 5.07088955e-01 -2.06864947e+00 -5.42713373e-04 -7.40259775e-01]
 [-2.43921781e+00  7.90129596e-02  8.92451376e-01 -2.24320345e+00]]
# 矩阵乘法
print matrix1.dot(matrix2)
[[ -4.9087993   -5.24847494   2.23127396  -9.00075094]
 [ -4.3711326  -11.56930421   4.11977944 -20.93874442]
 [ -3.8334659  -17.89013347   6.00828493 -32.8767379 ]
 [ -3.29579919 -24.21096273   7.89679041 -44.81473138]]
# 矩阵的逆
print np.linalg.inv(matrix2)
[[ 0.87118247  0.13529526  0.65368188  0.04324695]
 [ 0.2436198   0.28682038 -0.45815611  0.13585352]
 [ 2.14437795 -1.43465052  2.77022765  0.34626701]
 [-0.0855926  -0.70778596  0.37518698 -0.35027053]]
# 行列式计算
det2 = np.linalg.det(matrix2)
print det2
3.0512946673304944
# 随机数模块(生成大量随机数比python自带的随机数快)
# numpy.random
# 置随机数种子
np.random.seed(1203)
print np.random.rand() # 均匀分布的样本
print np.random.randint(12, 23) # 限定范围的整数随机数
print np.random.randn() # 标准正态分布样本
0.624586922441
15
2.74538297088