Numpy 整理笔记(一):数组的创建,形状和计算

版权声明:转载请注明来源及作者,谢谢! https://blog.csdn.net/qq_42442369/article/details/84262687
What’s numpy?

一个在Python中做科学计算的基础库,重在数值计算,也是大部分PYTHON科学计算库的基础库,多用于在大型、多维数组上执行数值运算

1. 创建数组

import numpy as np

# 1. 创建数组
# 调用numpy下面的array方法
a = np.array([0,1,2,3])
# b = np.array([0,1,2,3,])
print(a)

# array后面的括号可以跟生成器range()也可以直接跟列表
b = np.array(range(4))
print(b)

# 第二种方法,numpy下的arange方法:别拼错了,只有一个r: a + range
c = np.arange(4)
print(c)

# 以上结果都是一维矩阵 [0 1 2 3]

# 看一下数据类名
print(type(d))
# <class 'numpy.ndarray'> # 数据的类名

# 看一下数据类型
print(d.dtype) # 数据的类型
# int32

# 数据类型见图

# 与列表结果区分一下: 列表是有逗号的 [0, 1, 2, 3]
print(list(range(4))) 

# 创建二维数组
# 注意:np别掉了

m1 = np.array([np.arange(3),np.arange(3),np.arange(3)])
print(m1)

"""
[[0 1 2]
 [0 1 2]
 [0 1 2]]
"""

在这里插入图片描述

在这里插入图片描述

2. 查看数组形状(维度)

# 2. 查看数组形状(维度)

# 注意:不是方法
print(m1.shape) # (3, 3)

print(m1.shape[0]) # 第一维的元素个数 是个数个数个数!!!

# print(m1.reshape(2,5)) # 2*5一共有10个,根本就没有10个元素
# 报错:ValueError: cannot reshape array of size 9 into shape (2,5)

print(m1.reshape(9,1))  # 9*1=9=3*3

print(m1.shape) # (3, 3) m1还是3*3 

# 将二维数组转化为一维数组
m2 = m1.flatten() # 注意和shape用法不一样,后面需要加括号
print(m2)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 数组和数的计算

# 3. 数组和数的计算

import numpy as np

# a = np.array([np.arange(5),np.arange(3),np.arange(7)])
# print(a)

# 注意:矩阵必须是规整的,值必须一样
a = np.array([np.arange(7),np.arange(7),np.arange(7)])
print(a)
"""
[[0 1 2 3 4 5 6]
 [0 1 2 3 4 5 6]
 [0 1 2 3 4 5 6]]
"""

print(a+1) # 每一位都加1
print(a*5)
print(a/2)

# 原理:numpy的广播机制,加减乘除的值被广播到所有元素


# 重点:不同维度数组计算

b = np.array([np.arange(5),np.arange(5)]) # 4*2
print(b)

c = np.array([np.arange(2),np.arange(2),np.arange(2),np.arange(2)]) # 2*5
print(c)

# b*c  就会报错:perands could not be broadcast together with shapes (2,5) (4,2) 

# 广播原则,如果是二维数组:# 行和列至少有一个相同,且不同的俩中至少有1
# 如果是三维数组需要综合分析图

# 见图


#复习如何创建多维数组?
a = np.array([[1, 2, 3], [2, 3, 4]]) # 2*3
print(a.shape)

# # 把里面的np.arange(5)换成列表
# b = np.array([np.arange(2),np.arange(2)]) # 2*2
# print(b.shape)

# 把里面的np.arange(5)换成列表
# b = np.array([[1],[2]]) # 2*1
# print(b.shape)

b = np.array([[1, 2, 3]]) # 1*3
print(b.shape)

# b = np.array([[1, 2, 3],[1, 2, 3],[1, 2, 3]]) # 3*3
# print(b.shape)

print(a+b) # 行和列至少有一个相同,且不同的俩中至少有1

# 结果
# 2*3和2*1可以 2*3和2*2不行
# 2*3和1*3可以 2*3和3*3不行


# 重点:三维数组,及三维数组的计算

# shape为(3, 3, 3)意思是:有3块,每一块有3行3列
# 它与shape(3,2) 3行2列的时计算不来的 想象一个魔法,任意一面都和(3,2)不一样
# 想象一下图


# shape为(3, 3, 2) 与shape(3,2)  每一块与(3,2)计算可以
# 与(3,3)依然可以,因为是魔方总有一面是3*3

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42442369/article/details/84262687