学习篇之科学计算库numpy

本文详细介绍了numpy的基础知识,包括ndarray的创建、数据类型、索引切片,以及随机数生成。重点讲解了array(), arange(), linspace(), zeros(), ones()等函数的使用,并探讨了numpy在随机数生成中的应用,如normal(), rand(), randn(), randint()等。此外,还提及了数组的形状操作、复制、类型转换和数组的堆叠与拆分等重要概念。" 89520828,8532887,Spring Boot 2 访问子目录报404问题解析,"['Spring框架', 'Spring Boot', 'Web开发', '错误排查', 'MVC']
摘要由CSDN通过智能技术生成

numpy基础数据结构

numpy数组是一个多维数组对象,称为ndarray。其由两部分组成:

  • 实际的数据
  • 描述这些数据的元数据

多维数组ndarray

import numpy as np

ar = np.array([1,2,3,4,5,6,7])
print(ar)          # 输出数组,注意数组的格式:中括号,元素之间没有逗号(和列表区分)
print(ar.ndim)     # 输出数组维度的个数(轴数),或者说“秩”,维度的数量也称rank
print(ar.shape)    # 数组的维度,对于n行m列的数组,shape为(n,m)
print(ar.size)     # 数组的元素总数,对于n行m列的数组,元素总数为n*m
print(ar.dtype)    # 数组中元素的类型,类似type()(注意了,type()是函数,.dtype是方法)
print(ar.itemsize) # 数组中每个元素的字节大小,int32l类型字节为4,float64的字节为8
print(ar.data)     # 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。
ar   # 交互方式下输出,会有array(数组)

#数组的基本属性
#① 数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推
#② 在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量:
#比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组
#所以一维数组就是NumPy中的轴(axes),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。
#而轴的数量——秩,就是数组的维数。 

[1 2 3 4 5 6 7]
1
(7,)
7
int32
4
<memory at 0x0000027EA4F80F48>

创建数组:

  • array() 括号内可以是列表、元祖、数组、生成器等
  • arange() 类似range(),在给定间隔内返回均匀间隔的值。可以 .reshape(n,m)
    指定步长
  • linspace() 返回在间隔[开始,停止]上计算的num个均匀间隔的样本 所以函数都注意dtype,指定个数
  • zeros()/zeros_like()/ones()/ones_like() 0矩阵 1矩阵
  • eye() 单位矩阵

array() 函数,括号内可以是列表、元祖、数组、生成器等

ar1 = np.array(range(10))   # 整型
ar2 = np.array([1,2,3.14,4,5])   # 浮点型
ar3 = np.array([[1,2,3],('a','b','c')])   # 二维数组:嵌套序列(列表,元祖均可)
ar4 = np.array([[1,2,3],('a','b','c','d')])   # 注意嵌套序列数量不一会怎么样
print(ar1,type(ar1),ar1.dtype)
print(ar2,type(ar2),ar2.dtype)
print(ar3,ar3.shape,ar3.ndim,ar3.size)     # 二维数组,共6个元素
print(ar4,ar4.shape,ar4.ndim,ar4.size)     # 一维数组,共2个元素

[0 1 2 3 4 5 6 7 8 9] <class 'numpy.ndarray'> int32
[1.   2.   3.14 4.   5.  ] <class 'numpy.ndarray'> float64
[['1' '2' '3']
 ['a' 'b' 'c']] (2, 3) 2 6
[list([1, 2, 3]) ('a', 'b', 'c', 'd')] (2,) 1 2

arange(),类似range(),在给定间隔内返回均匀间隔的值。

print(np.arange(10))    # 返回0-9,整型
print(np.arange(10.0))  # 返回0.0-9.0,浮点型
print(np.arange(5,12))  # 返回5-11
print(np.arange(5.0,12,2))  # 返回5.0-12.0,步长为2
print(np.arange(10000))  # 如果数组太大而无法打印,NumPy会自动跳过数组的中心部分,并只打印边角:

[0 1 2 3 4 5 6 7 8 9]
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
[ 5  6  7  8  9 10 11]
[ 5.  7.  9. 11.]
[   0    1    2 ... 9997 9998 9999]

linspace():返回在间隔[开始,停止]上计算的num个均匀间隔的样本。

ar1 = np.linspace(2.0, 3.0, num=5)
ar2 = np.linspace(2.0, 3.0, num=5, endpoint=False)
ar3 = np.linspace(2.0, 3.0, num=5, retstep=True)
print(ar1,type(ar1))
print(ar2)
print(ar3,type(ar3))
#numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)   dtype很重要
#start:起始值,stop:结束值
#num:生成样本数&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值