Numpy科学计算库(笔记)

Numpy科学计算库

01 多维数组

01

shape: (10, 30, 5):

共有三个维度

第一个维度长度为10

第二个维度长度为30

第三个维度长度为5

02 创建Numpy数组

import numpy # 导入numpy库

(1) array

a = numpy.array([1, 2, 3, 4]) # 创建一个一维数组
print(a)
print(a.shape) # 数组形状
print(type(a)) # 数组类型
print(a[1]) # 调用数组中元素的方法
[1 2 3 4]
(4,)
<class 'numpy.ndarray'>
2
b = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]) # 创建二维数组
print(b)
print(b.shape)
print(b[1]) # 此时b[1]是表示数组第二个维度上的第二个数组
print(b[1][1]) # 取出数组第二个的维度上的第二个数字;也可使用b[1, 1]
print(b.size) # 数组中的元素总个数
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
(3, 4)
[5 6 7 8]
6
12

(2) 数组属性

02

注:size为数组中的元素总个数

(3) 指定数组数据类型

03

a = numpy.array([1, 2, 3, 4], dtype = numpy.int64) # 给数组中的元素添加数据类型, 也可以使用int64, 'int64', 'numpy.int64'
print(a)
print(a.dtype)
[1 2 3 4]
int64

(4) 创建特殊数组

04

np.arange(起始数字, 结束数字, 步长, dtype) 数字序列数组

np.ones(shape, dtype) 全1数组

np.zeros(shape, dtype) 全0数组

np.eye(shape, dtype) 单位矩阵

np.linspace(start, stop, num=50, dtype) 等差数组 (num元素个数)

np.logspace(start, stop, num=50, base=10, dtype) 等比数组 (num元素个数 base基)

(5) asarray

05

03 数组运算

(1) 改变数组形状

06

数组转变前后元素个数应当一定, 否则报错

如果reshape(shape)的shape中有一值为-1, 根据数组中元素总个数、以及其他维度的取值,来自动计算出这个维度的取值。

(2) 数组间的运算

1. 加法
a = numpy.array([0, 1, 2, 3])
b = numpy.array([4, 5, 6, 7])
print(a + b) # 对应各项相加,数组的形状应相同,除一维数组外,一维数组会加到多维数组的每行
[ 4  6  8 10]
2. 数组间的减法、乘法、除法

07

(3) 矩阵间的运算

1. 矩阵乘法
a = numpy.array([[1, 1], [0, 1]])
b = numpy.array([[2, 0], [3, 4]])
print(numpy.matmul(a, b)) # 矩阵相乘
print(numpy.dot(a, b)) # 同上
[[5 4]
 [3 4]]
[[5 4]
 [3 4]]
2. 矩阵转置
print(numpy.transpose(a))
[[1 0]
 [1 1]]
3. 矩阵求逆
print(numpy.linalg.inv(b))
[[ 0.5    0.   ]
 [-0.375  0.25 ]]

(4)数组元素间的运算

08

09

注:axis从零开始计数

a = numpy.arange(24).reshape(2, 3, 4)
print(a)
print(numpy.sum(a, axis = 0)) # 将数组0轴上的元素一一相加
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
[[12 14 16 18]
 [20 22 24 26]
 [28 30 32 34]]
a = numpy.logspace(1, 4, 4, base = 2) # 参数:(起始指数,结束指数,元素个数,基数)
print(a)
print(numpy.sqrt(a)) # 计算数组中的各元素平方根
[ 2.  4.  8. 16.]
[1.41421356 2.         2.82842712 4.        ]

(5) 数组的堆叠

10

a = numpy.array([1, 2, 3])
b = numpy.array([4, 5, 6])
print(numpy.stack((a, b), axis = 0)) # 在0轴上堆叠
print(numpy.stack((a, b), axis = 1)) # 在1轴上堆叠
[[1 2 3]
 [4 5 6]]
[[1 4]
 [2 5]
 [3 6]]

04 矩阵和随机数

(1) 矩阵

11

a = numpy.mat('1, 2, 3; 4, 5, 6') # 使用字符串创建数组,使用分号隔开行
print(a)
print(type(a))
[[1 2 3]
 [4 5 6]]
<class 'numpy.matrix'>

(2) 矩阵相乘、转置、求逆

a = numpy.mat([[1, 2], [3, 4]])
b = numpy.mat([[1, 0], [1, 1]])
print(a*b) # 此处矩阵相乘运算方法为a*b
[[3 2]
 [7 4]]
print(a.T) # 矩阵转置运算
print(a.I) # 矩阵求逆运算
[[1 3]
 [2 4]]
[[-2.   1. ]
 [ 1.5 -0.5]]

(3) 随机数

12

注:此处size是数组的形状

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值