Jupyter notebook教程系列(七)在Jupyter notebook上学习Numpy

Numpy库(以下运行结果均在#注释后)

为pyhton提供了高性能的多维数组对象,以及用于处理这些阵列的工具,

1.1 矩阵(Arrays)

   创建矩阵

#创建一个3行1列的矩阵
a = np.array([1, 2, 3]) 
#输出矩阵的维度,结果为(3,)
print(a.shape)
#选择矩阵的对应元素,在此处就是第一维度,第二维度,第三维度
print(a[0], a[1], a[2]) 
#创建一个2行3列的矩阵
b = np.array([[1,2,3],[4,5,6]])
#输出对应元素
print(b[0, 0], b[0, 1], b[1, 0])
#创建一个2*2的0矩阵,即元素全部为0
a = np.zeros((2,2))
#创建一个全部元素为1的矩阵
b = np.ones((1,2))
#创建一个元素全部为n的2*2矩阵
c = np.full((2,2), n)
#创建一个随机矩阵,即其中的元素值全部#为随机数
e = np.random.random((2,2))

1.2 矩阵索引(Array indexing)

Numpy提供了几种索引到数组的方法

import numpy
#获取a矩阵的前两行,1到3列的数据
a = np.array([[1,2], [3, 4], [5, 6]])
b = a[:2, 1:3]
#将0行0列置为77
b[0, 0] = 77
#将a的第1行赋给row_r1
row_r1 = a[1, :] 
#依然是将a的第1行赋给row_r2,但是不同的是,同样是1行但此时row_r2有两个维度
row_r2 = a[1:2, :] 
print(row_r1, row_r1.shape) # Prints "[5 6 7 8] (4,)"
print(row_r2, row_r2.shape) # Prints "[[5 6 7 8]] (1, 4)"
#注意此时a虽然是两行三列的矩阵,但它其实是个3维矩阵,他只是三个维度中的一个
print(a[0])#Prints "[[1,2], [3, 4], [5, 6]]"
print(np.array([a[0, 0], a[1, 1], a[2, 0]])) # Prints "[1 4 5]"
b = np.array([0,1,1])
print(np.arange(2))
#将b当做索引,从a中取出对应值
print(a[np.arange(3), b]) # Prints "[ 1 6 7 11]"Prints[1,4,6]

一些布尔变量在矩阵中的用法

a = np.array([[1,2], [3, 4], [5, 6]])
bool_idx = (a > 2)
print(bool_idx) # Prints "[[False False]
# [ True True]
# [ True True]]"
print(a[bool_idx]) # Prints "[3 4 5 6]"

1.3矩阵中的数学操作(Array math)

  在矩阵数组中的一些数学操作

x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])
v = np.array([9,10])
#对应相乘做和,1*9+2*10=29
print(np.dot(x, v)) #print"[29 67]"
#对应直接做和,axis=0时代表行,axis=1时对应列
print(np.sum(x)) #  prints "10"
print(np.sum(x, axis=0)) #  prints "[4 6]"
print(np.sum(x, axis=1)) #  prints "[3 7]"

x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
v = np.array([1, 0, 1])
y = np.empty_like(x) # 生成一个维度完全和矩阵x相同的空矩阵
for i in range(4):
y[i, :] = x[i, :] + v

#下面这些算法都是按照对应维度去进行计算的,因此要求必须两个运算矩阵的维度必须完全相同I
mport numpy as np
x = np.array([[1,2],[3,4]], dtype=np.float64)
y = np.array([[5,6],[7,8]], dtype=np.float64)
#加法
print(x + y)
print(np.add(x, y))
#减法
print(x - y)
print(np.subtract(x, y))
#乘法
print(x * y)
#除法
print(np.multiply(x, y))
print(x / y)
print(np.divide(x, y))
#开方
print(np.sqrt(x))

1.4 重构矩阵(reshape)

改变矩阵的维度

v = np.array([1,2,3]) # v has shape (3,)
w = np.array([4,5]) # w has shape (2,)
#将v矩阵重置为3行1列的矩阵()原本为1行3列)然后与w矩阵相乘
print(np.reshape(v, (3, 1)) * w)

猜你喜欢

转载自blog.csdn.net/dlhlSC/article/details/84309387
今日推荐