numpy 的基本使用

①创建行向量

# 方法一
a1 = np.array([[1, 2, 3, 4]])
print(a1.shape)
# >> (1, 4)

# 方法二
a2 = np.array([[1, 2, 3, 4]]).reshape(1, -1)
print(a2.shape)
# >> (1, 4)

②创建列向量

# 方法一
b1 = np.array([[5], [6], [7], [8]])
print(b1.shape)
# >> (4, 1)

# 方法二
b2 = np.array([[5, 6, 7, 8]]).reshape(-1, 1)
print(b2.shape)
# >> (4, 1)

# 方法三
b3 = np.array([[5, 6, 7, 8]]).T
print(b3.shape)
# >> (4, 1)

注意:以下这种方法严格上来说是不能用作行向量的。在做合并向量时,按照行来合并还勉强可以,但是按做列进行合并就会报错。在上述的方法则不会有问题

c1 = np.array([1, 3, 5, 7])
c2 = np.array([2, 4, 6, 8])
print(np.concatenate([c1, c2], axis=0))
# 报错:print(np.concatenate([c1, c2], axis=1))

③创建自定义矩阵

# 方法一
A1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(A1)
# 方法二
A2 = np.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
print(A2)
# 方法三
A3 = np.mat([[1, 2, 3, 4], [5, 6, 7, 8]])
print(A3)
mat 和 matrix 区别
mat: 如果输入的本身就是一个矩阵,则mat方法是对原始矩阵的一个引用,不是copy。
修改B2,导致了B1也会改变.
mat 等价 np.matrix(data, copy = False)
matrix默认是np.matrix(data, copy = True)
B1 = np.array([[1, 2, 3, 4]])
B2 = np.mat(B1)
B2[0, 0] = 0
print(B1)
# >>[[0 2 3 4]]
matrix 和 array 区别
# 做矩阵乘法时
C1 = np.array([[1, 3, 5, 7]]).reshape(-1, 1)
C2 = np.array([[2, 4, 6, 8]]).reshape(1, -1)
# 需要使用dot方法
print(np.dot(C1, C2))

C3 = np.matrix([[1, 3, 5, 7]]).reshape(-1, 1)
C4 = np.matrix([[2, 4, 6, 8]]).reshape(1, -1)
# 直接乘即可
print(C3*C4)

# 其他方法的使用也有不同,使用array还是matrix自己选择。

④创建全0矩阵

D = np.zeros((4, 4))
print(D)

⑤创建全1矩阵

E = np.ones((3, 4))
print(E)

⑥创建空矩阵(不是零矩阵哦!)

# 这个0表示的是任意列
F = np.empty((4, 0))
# T为4*1矩阵
T = np.array([[1, 2, 3, 4]]).T
# 按照列的方式进行合并,结果为还是一列,即为T矩阵,表明F确实是空的。没有多出一列。
print(np.concatenate([F, T], axis=1))
空矩阵能够做什么呢?
如果我们有n个矩阵,不能手动一个一个合并的时候。我们对它们进行合并,需要调用for循环来处理
X1 = np.array([[1, 2, 3, 4]])
X2 = np.array([[2, 3, 4, 5]])
X3 = np.array([[3, 4, 5, 6]])
Xn = np.array([[4, 5, 6, 7]])
X = [X1, X2, X3, Xn]
# 创建一个 n行4列 的空矩阵是for循环能够有起始矩阵
Empty_Matrix = np.empty((4, 0)).T
for i in range(4):
    Empty_Matrix = np.concatenate([Empty_Matrix, X[i]], axis=0)
print(Empty_Matrix)

输出:

[[1. 2. 3. 4.]
 [2. 3. 4. 5.]
 [3. 4. 5. 6.]
 [4. 5. 6. 7.]]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值