Numpy入门

虽然python自己有列表和数组,但是与numpy相比更消耗资源。numpy是python进行数值计算时最重要的基础包之一

创建数组
import numpy as np

a = np.arange(5)  # 一维数组
b = np.array([np.arange(6), np.arange(6)])  # 二维数组

x = [y for y in range(6)]
c = np.array([x] * 4)  # 二维数组4*6

c:--------------
[[0 1 2 3 4 5]
 [0 1 2 3 4 5]
 [0 1 2 3 4 5]
 [0 1 2 3 4 5]]

索引

基本上和list一模一样

遍历:

for element in b.flat: # 将b展成一维数组后遍历并打印
    print(element)

for i in range(len(b)):  # 根据索引遍历b中的元素并打印
    for j in range(len(b[0])):
        print(b[i][j])

切片索引:左闭右开

找出二维数组a中第m个数组的前n个元素    a[m, :n]


基本运算

向量和向量:

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[4, 5, 6], [1, 2, 3]])

运算

加法np.add(a,b)  或  a+b

对应位进行运算

print(a + b)
-----------
[[5 7 9]
 [5 7 9]]

减法np.subtract(a,b)  或  a-b
乘法(X乘)np.multiply(a,b) 或 a * b
除法     np.divide(a,b) 或 a/b
乘法(点乘,内积)np.dot(a,b)对应位相乘再相加

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([4, 5, 6])

print(np.dot(a, b))
-----------
[32 77]

向量和标量:

有数组a,运算有加减乘除取余( + - * / %)都是所有位同时进行运算

a.T,矩阵转置

矩阵的逆,参考
矩阵可逆的充要条件是矩阵满秩

import numpy as np

a = np.array([[1, 2], [3, 4]])  # 初始化一个非奇异矩阵(数组)
print(np.linalg.inv(a))  # 对应于MATLAB中 inv() 函数

# 矩阵对象可以通过 .I 更方便的求逆
A = np.matrix(a)
print(A.I)

通用函数 ufunc

NumPy 中包含了对数组进行处理的通用函数。以 ndarray 数组对象作为运算的基本元素

一个参数的叫一元函数,两个参数的叫二元函数

import numpy as np

A = np.random.randint(0, 10, (5, 6))  # 随机初始化一个5行6列的整数矩阵A

# 对矩阵A开平方
np.sqrt(A)  

# 将数组 A 的平方根乘浮点数分解成整数和小数部分
# B 是小数部分
B, C = np.modf(np.sqrt(A))

np.square() 平方;np.abs() 绝对值

更多可参考:Numpy通用函数-CSDN博客


改变numpy数组的形状
  • 改变形状:reshape()、ravel()、flatten()、transpose()
  • 数组堆叠:hstack(),vstack(),dstack()

改变形状:

reshape()

import numpy as np

b = np.arange(24).reshape(2,3,4) # 2个3*4的数组
print(b)

ravel(),拆解,将多维数组用一维数组展示出来
flatten(),拉直,将多维数组变成一维数组(新开辟空间)
transpose(),转置  b.transpose()
shape,使用元组的方式改变形状

import numpy as np

b = np.arange(24)
b.shape = (6, 4)
print(b)

数组堆叠:

就是两个数组叠在一起,要注意的是使用时是两层括号

hstack() 水平叠加
vstack() 垂直叠加
前面这两个很容易理解
dstack() 深度叠加,就是在深度上叠加(参考

import numpy as np

a = np.arange(9).reshape(3, 3)
b = a * 2
c = np.hstack((a, b)) # 水平叠加
print(c)
---------------------
[[ 0  1  2  0  2  4]
 [ 3  4  5  6  8 10]
 [ 6  7  8 12 14 16]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值