欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > Numpy基础01

Numpy基础01

2024/10/23 21:30:00 来源:https://blog.csdn.net/adc_abc123/article/details/143108048  浏览:    关键词:Numpy基础01

目录

1.array创建对象

1.1定义一维数组

1.2定义二维数组

2.Numpy的数据类型

3.数据类型标识码

4.array的API

4.1astype()

4.2max()

4.3min()

4.4sum()

4.5reshape()

4.6random.rand()

5.数组属性

5.1ndim

5.2shape

5.3itemsize

5.4flags

6.创建数组方法

6.1arrage()

6.2empty()

6.3zeros()

6.4ones()

6.5arange()

6.6linspace()

7.切片

7.1slice(start,stop,step)

7.2[start:stop:step]

8.高级索引

8.1整数数组索引

8.2bool索引

9.广播

9.1一维数组与标量相加


1.array创建对象

numpy.array(object, dtype = None, copy = True, order = None,ndmin = 0)

参数说明:

序号参数描述说明
1object表示一个数组序列
2dtype可选参数,通过它可以更改数组的数据类型
3copy可选参数,表示数组能否被复制,默认是 True
4order以哪种内存布局创建数组,有 3 个可选值,分别是 C(行序列)/F(列序列)/A(默认)
5ndmin用于指定数组的维度

1.1定义一维数组

arr = np.array([10, 20, 30, 40])
print(arr)

1.2定义二维数组

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4)

2.Numpy的数据类型

序号数据类型语言描述
1bool_布尔型数据类型(True 或者 False)
2int_默认整数类型,类似于 C 语言中的 long,取值为 int32 或 int64
3intc和 C 语言的 int 类型一样,一般是 int32 或 int 64
4intp用于索引的整数类型(类似于 C 的 ssize_t,通常为 int32 或 int64)
5int8代表与1字节相同的8位整数。值的范围是-128到127
6int16代表 2 字节(16位)的整数。范围是-32768至32767
7int32代表 4 字节(32位)整数。范围是-2147483648至2147483647
8int64表示 8 字节(64位)整数。范围是-9223372036854775808至9223372036854775807
9uint81字节(8位)无符号整数
10uint162 字节(16位)无符号整数
11uint324 字节(32位)无符号整数
12uint648 字节(64位)无符号整数
13float_float64 类型的简写
14float16半精度浮点数,包括:1 个符号位,5 个指数位,10个尾数位
15float32单精度浮点数,包括:1 个符号位,8 个指数位,23个尾数位
16float64双精度浮点数,包括:1 个符号位,11 个指数位,52个尾数位
17complex_复数类型,与 complex128 类型相同
18complex64表示实部和虚部共享 32 位的复数
19complex128表示实部和虚部共享 64 位的复数
20str_表示字符串类型
21string_表示字节串类型

3.数据类型标识码

字符对应类型
b代表布尔型
i带符号整型
u无符号整型
f浮点型
c复数浮点型
m时间间隔(timedelta)
Mdatatime(日期时间)
OPython对象
S,a字节串(S)与字符串(a)
UUnicode
V原始数据(void)

4.array的API

4.1astype()

转换数据类型

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.dtype)
arr41=arr4.astype(float)
print(arr41)
print(arr41.dtype)

4.2max()

求数组最大元素

4.3min()

求数组最小元素

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.max())
print(arr4.min())

4.4sum()

求和

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.sum(axis=1))
print(arr4.sum(axis=0))
print(arr4.sum())

二维数组中

行:axis=1

列:axis=0

4.5reshape()

返回修改维度后的数组

arr4 = np.array([[1,2,3,4,5,6]])
print(arr4.reshape(2,3))
print(arr4.reshape(3,-1))

-1表示形状占位符,numpy自动根据元素组的长度进行计算

order='C'

按行填充

arr52 = np.array([1,2,3,4,5,6,7,8])
print(arr52.reshape((2, 4), order='C'))

order='F'

按列填充

arr51 = np.array([1,2,3,4,5,6,7,8])
print(arr51.reshape((2, 4), order='F'))

4.6random.rand()

生成指定数量的标准正态分布数据,均值:0,方差:1

arr = np.random.randn(10)
print(arr)

生成一个3行3列的二维正太分布的样本数据

arr1 = np.random.randn(3,3)
print(arr1)

5.数组属性

5.1ndim

查看数组维度

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.ndim)

5.2shape

(1)查看数组的维度

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.shape)

(2)修改数组维度

直接在原数组上修改维度

arr5 = np.array([1,2,3,4,5,6,7,8])
arr5.shape=(2,4)
print(arr5)

5.3itemsize

返回数组中的元素的字节大小

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.itemsize)

5.4flags

显示数据在内存的存储信息

arr4 = np.array([[1,2,3],[4,5,6]])
print(arr4.flags)

6.创建数组方法

6.1arrage()

6.2empty()

numpy.empty(shape, dtype = float, order = 'C')

创建一个数组,以随机数填充

arr6 = np.empty((3,4))
print(arr6)

6.3zeros()

创建一个数组,以0填充

numpy.zeros(shape, dtype = float, order = 'C')

arr7 = np.zeros((2,3),order='C')
print(arr7)

6.4ones()

numpy.ones(shape, dtype = None, order = 'C')

创建一个数组,以1填充

arr8 = np.zeros((3,3),dtype="i4",order='C')
print(arr8)

6.5arange()

numpy.arange(start, stop, step, dtype)

arr91 = np.arange(9)
print(arr91)
arr92 = np.arange(1,20,2)
print(arr92)
arr93 = np.arange(-1,-10,-3,dtype="i1")
print(arr93)
arr94 = np.arange(-0.1,-1,-0.2)
print(arr94)

6.6linspace()

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数描述
start起始值,默认为 0
stop终止值
num表示数值区间内要生成多少个均匀的样本,默认值为 50
endpoint默认为 True,表示数列包含 stop 终止值,反之不包含
retstep表示是否返回步长。如果为 True,则返回一个包含数组和步长的元组;如果为 False,则只返回数组。默认为 False。
dtype返回 ndarray 的数据类型,默认为 None,表示根据输入参数自动推断数据类型。

如果endpoint=True,step=(stop-start)/(num-1)

如果endpoint=False,step=(stop-start)/num

arr10 = np.linspace(10,100,10)
print(arr10)
arr11 = np.linspace(1,9,5,endpoint=False,retstep=True)
print(arr11)
arr12 = np.linspace(1,9,5,endpoint=True,retstep=True)
print(arr12)

7.切片

7.1slice(start,stop,step)

切片范围粗糙,start:开始的行数,stop:结束的行数(不包含)

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[slice(0,len(arr),1)])

7.2[start:stop:step]

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[...,1])# 第2列元素
print(arr[1,...])# 第2行元素
print(arr[1:3,...])  # 第1,2行所有元素
print(arr[...,1:2]) # 第2列的所有元素
print(arr[1:2,1:2])# 第2行第2列元素

8.高级索引

8.1整数数组索引

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
#[0,1,0]为行索引,[0,1,2]为列索引,两者相应位置组合为要索引的位置
print(arr[[0,1,0],[0,1,2]])

8.2bool索引

布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。

  • 用比较运算符进行索引
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr>5)
print(arr[arr>5])
  • 用逻辑运算符进行索引
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[~(arr>5)])

逻辑运算符

  • &:与运算

  • |:或运算

  • ~:非运算,取反

9.广播

对数组在横向或纵向上进行一定次数的重复进行填充, 使参与运算的数组维度相同.

广播规则

  1. 维度匹配:如果两个数组的维度数不同,维度数较少的数组会在前面补上长度为 1 的维度。

  2. 长度匹配:如果两个数组在某个维度上的长度不同,但其中一个数组在该维度上的长度为 1,则该数组会沿着该维度进行广播。

  3. 不匹配:如果两个数组在某个维度上的长度既不相同也不为 1,则广播失败,抛出 ValueError。

理解:需要扩充的维度,复制样本为1.

9.1一维数组与标量相加

arr1 = np.array([1, 2, 3])
print(arr1+10)

9.2二维数组与一维数组相加

arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2 = np.array([4,3,2])
print(arr1+arr2)

9.3二维数组与二维数组相加

arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[4], [5], [6]])
print(arr1 + arr2)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com