numpy基本操作

1. 基本操作

import numpy as np

# print(dir(np))

# 1D array
arr1 = np.array([1,2,3,4,5,6,7,8])
# 2D array
arr2 = np.array([[1,2,3,4],[5,6,7,8]])
# 3D array
arr3 = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])

# 数据类型
print(type(arr1))
# 维度
print(arr1.ndim)
# 形状
print(arr1.shape)
# 元素个数
print(arr1.size)
# 元素类型
print(arr1.dtype)
# 重新设置数据类型
arr1 = arr1.astype('float32')
print(arr1.dtype)   
# 重新设置形状
print(arr1.reshape((2,4)))
print(arr1.reshape((4,2)))
# 转置
print(arr2)
print(arr2.T)

# 求和
print(arr1.sum())
# 求平均值
print(arr1.mean())
# 求最大值
print(arr1.max())
# 求最小值
print(arr1.min())
# 求标准差
print(arr1.std())
# 求方差
print(arr1.var())

<class ‘numpy.ndarray’>
1
(8,)
8
int32
float32
[[1. 2. 3. 4.]
[5. 6. 7. 8.]]
[[1. 2.]
[3. 4.]
[5. 6.]
[7. 8.]]
[[1 2 3 4]
[5 6 7 8]]
[[1 5]
[2 6]
[3 7]
[4 8]]
36.0
4.5
8.0
1.0
2.291288
5.25

2. 张量

  • 标量: 单个数据 1,2,3,4
  • 向量:一维数组 将多个标量按照一定的顺序排列成一行或一列[1,2,3,4]
  • 矩阵:二维数组,成行成列的一堆数据
  • 张量:三维,四维,五维等高维数组 标量是0阶张量,向量是1阶张量,矩阵是2阶张量
import  matplotlib.pyplot as plt
img = plt.imread('DL.jpg')    
print(img.shape)

import numpy as np

# 等差数列  [start:起始值,stop:结束值(包含),num:元素个数]
X1 = np.linspace(1, 20, num=20)
# 等差数列  [start:起始值,stop:结束值(不包含),step:步长]
X2 = np.arange(1, 20,step=2)

# 生成全为1的矩阵
X3 = np.ones((2, 5))
# 生成全为0的矩阵
X4 = np.zeros((2, 5))
# 生成随机矩阵
X5 = np.random.rand(2, 5)
# 生成随机矩阵(正态分布)
X6 = np.random.randn(2, 5)
# 生成随机矩阵(正态分布)
X7 = np.random.randint(1, 20, size=(3, 5))
# 生成随机矩阵(正态分布)
X8 = np.random.choice(10, 5)
# 生成随机矩阵(正态分布)

# 生成单位矩阵
X9 = np.eye(5)
# 按照arr的形状生成数组
X10 = np.zeros_like(X3)
# 生成对角矩阵
X11 = np.diag(X5)
# 按行的顺序拼接成矩阵
X12 = np.vstack((X3, X4))
# 按列的顺序拼接成矩阵
X13 = np.hstack((X3, X4))


print(X1)
print(X2)
print(X3)
print(X4)
print(X5)
print(X6)
print(X7)
print(X8)
print(X9)
print(X10)
print(X11)
print(X12)
print(X13)

(1080, 1920, 3)
X1
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.]
X2
[ 1 3 5 7 9 11 13 15 17 19]
X3
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
X4
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
X5
[[0.47732223 0.32462703 0.96400622 0.16396747 0.65582181]
[0.19220308 0.02758551 0.25121584 0.62202036 0.30080802]]
X6
[[-0.93016251 0.83600315 0.6375864 -0.46500221 -0.12204078]
[-1.30995952 0.05446358 1.08215726 1.19010451 1.85195683]]
X7
[[ 8 16 13 3 1]
[17 15 15 3 9]
[13 6 5 8 8]]
X8
[7 6 5 6 5]
X9
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
X10
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
X11
[0.47732223 0.02758551]
X12
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
X13
[[1. 1. 1. 1. 1. 0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1. 0. 0. 0. 0. 0.]]

3. 裁剪鸢尾花数据

import numpy as np
from sklearn.datasets import load_iris

# 导入数据集
data=np.array(load_iris().data)
print(data)
print(data.shape)
# 导入标签
index=np.array(load_iris().target)
index=np.reshape(index, (150, 1))
# 将数据和标签合并
X = np.hstack((data, index))
print(X)

# 取第一行数据
X_first = X[0, :]
print(X_first)

# 取出第一列数据
X_first = X[:, 0]
print(X_first)

# 取出第一行和第一列和第三列数据
X_first = X[0, [0, 2]]
print(X_first)

4. 矩阵运算

import numpy as np
from sklearn.datasets import load_iris

arr=np.array([1,2,3,4])
print(arr+1)
print(arr-2)
print(arr*2)
print(arr/2)
print(arr**2)
print(arr%2)

# 两个数组之间做加减乘除运算形状必须要一致

arr1=np.array([[1,2],[3,4]])
arr2=np.array([[1,2],[3,4]])

print(arr1+arr2)
print(arr1-arr2)
print(arr1*arr2)
print(arr1/arr2)
print(arr1**arr2)
print(arr1%arr2)
# 内积 arr1的列数一定等于arr2的行数
print(arr1@arr2)

[2 3 4 5]

[-1 0 1 2]

[2 4 6 8]

[0.5 1. 1.5 2. ]

[ 1 4 9 16]

[1 0 1 0]

[[2 4]
[6 8]]

[[0 0]
[0 0]]

[[ 1 4]
[ 9 16]]

[[1. 1.]
[1. 1.]]

[[ 1 4]
[ 27 256]]

[[0 0]
[0 0]]
内积
[[ 7 10]
[15 22]]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MechMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值