Numpy学习——创建ndarray的方法

1.创建ndarray的方法

|------------------|-------------------------------------------------------------------|
| 方法 | 描述 |
| 基础构造 | np.array |
| 基础构造 | np.copy:深拷贝,复制另一个数组,成为一个新数组,修改后不改变copy的 |
| 预定义形状填充 | np.zeros(shape):创建shape形状的全为0的数组 |
| 预定义形状填充 | np.ones(shape):创建shape形状全为1的数组 |
| 预定义形状填充 | np.empty(shape):创建一个未初始化的数组 |
| 预定义形状填充 | np.full(shape,num):创建一个shape形状的元素全为num的数组 |
| 基于数值范围生成 | np.arange(start,end,step):范围[start,end),step为间隔的长短 |
| 基于数值范围生成 | np.linspace(start,end,num):范围[start,end],num表示将范围分成num-1段, 取分段点 |
| 基于数值范围生成 | np.logspace(start,end,num,base):取base^a,a为np.linspace生成的点 |
| 特殊矩阵生成 | np.eye(shape):生成主对角线为1,其余为0的矩阵 |
| 特殊矩阵生成 | np.diag(对边元素):生成主对角线有数,其余为0的矩阵 |
| 随机数组生成 np.random | np.random.rand(shape):生成0-1之间的数 |
| 随机数组生成 np.random | np.random.uniform(start,end,shape):生成start到end之间的随机浮点数 |
| 随机数组生成 np.random | np.random.randint(start,end,shape):生成start-end范围之间的随机整数 |
| 随机数组生成 np.random | np.random.rand(shape):生成正态分布的随机数,大概率在(-3,3)之间, 取到0附近的概率最大 |
| 随机数组生成 np.random | np.random.seed():随机种子 |

2.示例

1.基础构造

使用np.array先构造一个数组,再使用copy拷贝,这个是深拷贝,copy的数组进行修改后不影响原数组。

python 复制代码
import numpy as np
#####1.基础构造:#######
#array
list1=[1,2,3]
arr=np.array(list1,dtype=np.float64)
print(arr)
print(arr.ndim)
#copy,复制
arr_copy=np.copy(arr)#不是一个数组了
print(arr_copy)
arr_copy[0]=8
print(arr,arr_copy)

2.预定义形状填充

注:预定义填充还有xxx_like这一功能:xxx代表预定义填充函数功能,like表示copy其他数组的形状。

python 复制代码
import numpy as np
######################2.预定义形状填充###############
#zeros,全0数组,默认小数
arr0=np.zeros((2,3))
#创建1维的数组
arr0=np.zeros((3,))
print(arr0)
#ones,全1数组
arr1=np.ones((2,3))
print(arr1)
#empty,未初始化
arr_empty=np.empty((4,3))
print(arr_empty)
#full,填满某个数,输入形状和要填的数
arr_full=np.full((2,3),5)
print(arr_full)
#zeros_like,表示全为0,形状copy别人的,同理,有ones_like,empty_like,full_like
arr_like=np.zeros_like(arr_empty)
print(arr_like)

3.基于数值范围生成

arange其实和linspace功能差不多,arange是取一个数,再走step步,再取数;linspace是通过这个取的范围,先化成num-1段,取这num个端点;logspace是在linspace基础上取base(底数)的端点次方。

python 复制代码
import numpy as np
#####################3.基于数值范围生成#################
#arange(start,end,step),[start,end)
arr_arange=np.arange(2,11,2)
print(arr_arange)
#linspace(start,end,num),分成num个点,num-1段
arr_linspace=np.linspace(0,10,6)
print(arr_linspace)
#logspace(start,end,num,base),分成num个点,base是对数的底
arr_log=np.logspace(1,3,3,base=2)
#输出2,4,8(取3个点:1,2,3,然后求2的n次方)
print(arr_log)

4.特殊矩阵生成

eye是令主对角线元素为1,其余为0;diag就是填充主对角线上的数,其余都为0

python 复制代码
import numpy as np
######################4.特殊矩阵生成##################
#eye(m,n),主对角线是1,其余为0
arr_eye=np.eye(6,5)
print(arr_eye)
#diag,对角矩阵,括号里面填对边的数值
arr_diag=np.diag([1,2,3,4,5])
print(arr_diag)

5.随机数生成

你会发现,使用随机种子之后,随机的数组不会再改变

python 复制代码
import numpy as np
######################5.随机数值生成##################
#random.rand,生成0到1之间的随机浮点数
arr_01=np.random.rand(2,3)
print(arr_01)
#random.uniform(start,end,(m,n)),生成指定范围区间的随机浮点数
arr_uniform=np.random.uniform(3,6,(2,3))
print(arr_uniform)
#randint,生成指定范围的随机整数
arr_int=np.random.randint(3,10,(2,3))
print(arr_int)
#randn,正态分布,两边小,中间大,大部分是(-3,3)之间的数,取到0附近概率最大
arrn=np.random.randn(2,3)
print(arrn)
#seed:种子
np.random.seed(20)
arr_intseed=np.random.randint(1,10,(2,5))
print(arr_intseed)
相关推荐
西岸行者3 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意3 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码3 天前
嵌入式学习路线
学习
毛小茛3 天前
计算机系统概论——校验码
学习
babe小鑫3 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms3 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下3 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。3 天前
2026.2.25监控学习
学习
im_AMBER3 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J3 天前
从“Hello World“ 开始 C++
c语言·c++·学习