计算
import numpy as np
# 计算平均数
list = [1,2,3,4,5]
print(np.mean(list))
矩阵
from numpy import array as matrix, arange
# 创建矩阵,0-14个元素,改造成3 * 5的矩阵。
X = arange(15).reshape(3,5)
# 创建矩阵,12个元素,2 * 6 的矩阵,指定为int类型。
X = matrix([[1,2,3,4,5,6],[7,8,9,10,11,12]], dtype=int)
# 创建列向量
x = np.array([11,12])
# 随机矩阵
import numpy as np
X = np.empty((5, 5)) # 创建一个随机数矩阵
# 创建特殊矩阵
from numpy import zeros, ones, empty
z = zeros((3,4)) # 全零矩阵
o = ones((3,4)) # 全一矩阵
e = empty((2,2)) # 空矩阵(实际全是非常小的数)
数学运算
from numpy import array as matrix, arange
a = arange(9).reshape(3,3)
b = arange(3)
a + b # 两个矩阵相加。
a - b # 两个矩阵相减
a * b # 两个矩阵相乘
a < 5 # 矩阵中每一个元素做比较
a ** 2 # 矩阵中每一个元素进行指数运算
a += 3 # 矩阵中每一个元素加上一个数字
矩阵的内置方法
>>> a = arange(9).reshape(3,3)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> a.max()
8
>>> a.min()
0
>>> a.sum()
36
>>>
矩阵索引、拆分、遍历
>>> a = arange(25).reshape(5,5)
>>> a
array([[ 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]])
>>> a[2,3] # 取第三行,第四列元素。
13
>>> a[0:3,3] # 取第一行到第三行,第四列元素。
array([ 3, 8, 13])
>>> a[:,2] # 取所有行,第三列元素。
array([ 2, 7, 12, 17, 22])
>>> a[:3,:] # 取第一行到第三行,所有元素。
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a[-1] # 取最后一行。
array([20, 21, 22, 23, 24])
>>> for row in a: # 按照行迭代数据。
... print(row)
...
[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]
>>> for element in a.flat: # 按照元素迭代数据。
... print(element)
...
0
1
2
3
4
改变矩阵
>>> b = arange(20).reshape(5,4)
>>> b
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])
>>> b.ravel() # 散开矩阵
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
>>> b.reshape(4,5) # 转换矩阵
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
>>> b.T # reshape 方法不改变原矩阵的值,所以需要使用 .T 方法来获取改变后的值。
array([[ 0, 4, 8, 12, 16],
[ 1, 5, 9, 13, 17],
[ 2, 6, 10, 14, 18],
[ 3, 7, 11, 15, 19]])
>>> b
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]])
>>>
合并矩阵
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 5 11:02:40 2019
@author: duchaoqun
"""
import numpy as np
# Random num between 0 and 1.
np.random.random((2,2))
# 向下取整
d1 = np.floor(10 * np.random.random((2,2)))
d2 = np.floor(10 * np.random.random((2,2)))
# 按照列堆叠起来
np.vstack((d1,d2))
# array([[5., 7.],
# [7., 3.],
# [8., 2.],
# [5., 1.]])
# 按照行堆叠起来
np.hstack((d1,d2))
# array([[5., 7., 8., 2.],
# [7., 3., 5., 1.]])
# 和并列,效果同上
np.column_stack((d1,d2))
# array([[5., 7., 8., 2.],
# [7., 3., 5., 1.]])
# 这里创建的是列向量?
c1 = np.array([11,12])
c2 = np.array([21,22])
# 合并两个列向量,变成2 * 2的矩阵。
np.column_stack((c1,c2))