Numpy 入门 一

参考来源:点击打开链接

本文主要分为以下几个部分:

  1. Numpy--简介 (Introduction)
  2. Numpy--Ndarray对象 (Ndarray object)
  3. Numpy--数据类型 (Data types)
  4. Numpy--数组属性 (Array attributes)
  5. Numpy--数组创建例程 (Array creation routines)
  6. Numpy--从现有数据创建数组 (Array from existing data)

一. Numpy --- 简介

Numpy--Numerical Python,是一个基于Python的可以存储和处理大型矩阵的库。几乎是Python 生态系统的数值计算的基石,例如Scipy,Pandas,Scikit-learn,Keras等都基于Numpy。使用Numpy, 可以进行:

  • 数组和逻辑运算
  • 傅里叶变换和图形操作实例
  • 线性代数相关的运算操作

NumpyMat-plotlib(基于Python的绘图库)和Scipy(包括统计, 优化,整合和线性代数等模块)的结合使用。由于基于Python并开源,因而可以替代Matlab,成为一种更加完整的体系。

This combination is widely used as a replacement for MatLab, a popular platform for technical computing.

二. Ndarray对象

Ndarray (N-dimensional array type) N维数组模型,是可以通过索引访问的包含相同元素集合。ndarray本质是数组,不同之处在于它支持数组里面嵌套数组,这也就是N-dimensional的来源。这个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快节省空间的特点。

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
  • 参数以及介绍

object: Any object exposing the array interface method returns an array, or any (nested) sequence.

dtype: 描述数组元素的类型

copy: 默认值为(True) ,对象被复制

order: C(行),F(列),A(Any)(default)

subok: 默认情况下,强制类型转换为基类数组

ndmin: 返回指定数组的最小维数

import numpy as np

a1 = np.array([1, 2, 3, 4])
a2 = np.array([[1, 2], [3, 4]])
a3 = np.array([1, 2, 3, 4, 5], ndmin=2)
a4 = np.array([1, 2, 3], dtype=complex)
print(a1)
print(a2)
print(a3)
print(a4)

输出结果:


常用ndarray方法

  • reshape(…) 返回一个给定shape的数组的副本
  • resize(…) 返回给定shape的数组,原数组shape发生改变
  • flatten()/ravel() 返回展平数组,原数组不改变
  • astype(dtype) 返回指定元素类型的数组副本
  • fill() 将数组元素全部设定为一个标量值
  • sum/Prod() 计算所有数组元素的和/积
  • mean()/var()/std() 返回数组元素的均值/方差/标准差
  • max()/min()/ptp()/median() 返回数组元素的最大值/最小值/取值范围/中位数
  • argmax()/argmin() 返回最大值/最小值的索引
  • sort() 对数组进行排序,axis指定排序的轴;kind指定排序算法,默认是快速排序
  • view()/copy() view创造一个新的数组对象指向同一数据;copy是深复制
  • tolist() 将数组完全转为列表,注意与直接使用list(array)的区别
  • compress() 返回满足条件的元素构成的数组

三: 数据类型

有五种基本的数据类型

  • bool 布尔
  • int 整形(int, intc, intp, int8, int16, int32, int64)
  • uint 无符号整形(uint8, uint16, uint32, uint64)
  • float 浮点型(float, float16, float32, float64)
  • complex复数(complex, ocmplex64, complex128)

NumPy数值类型是dtype对象的实例,可由如下方法构造:

numpy.dtype(object, align, copy)
import numpy as np

a1 = np.array([1, 2, 3, 4],dtype=np.int)
a2 = np.array([[1, 2], [3, 4]],dtype=np.float)
a3 = np.array([1, 2, 3, 4, 5], dtype=np.complex)
print(a1)
print(a2)
print(a3)

运行结果:


数据类型转换:

a1 = np.array([1, 2, 3, 4])
a2=np.array(a1,np.float32)
print(a1.dtype)
print(a2.dtype)

运行结果:


Each built-in data type has a character code that uniquely identifies it.

  • 'b' − boolean
  • 'i' − (signed) integer
  • 'u' − unsigned integer
  • 'f' − floating-point
  • 'c' − complex-floating point
  • 'm' − timedelta
  • 'M' − datetime
  • 'O' − (Python) objects
  • 'S', 'a' − (byte-)string
  • 'U' − Unicode
  • 'V' − raw data (void)

四:数组属性

常用ndarray属性:

  • dtype 数组元素的类型
  • shape 数组形状
  • ndim 数组的维度
  • size 数组中元素的个数
  • itemsize 数组元素所占字节数
  • T 数组的转置
  • flat 返回一个数组的迭代器,对flat赋值将导致整个数组的元素被覆盖
  • real/imag 复数数组的实部/虚部
  • nbytes 数组占用的存储空间
a1 = np.array([[1, 2, 3],[4,5,6]])
print(a1.shape)
a1.shape=(3,2)
print(a1)
b1 = np.arange(24)
print("b1.ndim = ",b1.ndim)
print('b1.reshape(2,4,3) = ',b1.reshape(2,4,3))

运行结果:


五:数组创建例程(Array creation routines)

创建一个新的ndarray对象:

A new ndarray object can be constructed by any of the following array creation routines or using a low-level ndarray constructor.

代码及注释如下所示:

a1=np.empty([2,3])
a2=np.zeros([2,3])
a3=np.ones([2,3],dtype=np.complex)
print(a1)
print(a2)
print(a3)

运行结果:


六:从现有数据创建数组(Array from existing data)

这一部分, 我将介绍如何使用现有的数据来创建数组。

代码及注释如下所示:

a1 = np.asarray([1, 2, 3], dtype=float)
print('a1 = ', a1)
a2 = np.asarray([(5, 2, 0), (8, 9)])
print('a2 = ', a2)
print('a3 = ', range(5))
a4 = np.fromiter(iter(range(5)), dtype=float)
print('a4 = ', a4)

运行结果:


以上就是入门一的全部内容了,不足请多多指教。


### NumPy 基础入门 #### 导入 NumPy 包 为了使用 NumPy 的功能,首先需要导入该库。通常情况下,会将其重命名为 `np` 以便于后续调用。 ```python import numpy as np ``` 这使得可以在整个程序中通过前缀 `np.` 来访问 NumPy 提供的各种函数和对象[^1]。 #### 创建 NumPy 数组 NumPy 中最基本的数据结构是 ndarray (n-dimensional array),即多维数组。可以通过多种方式来创建这些数组: - **从 Python 列表转换** 可以直接利用现有的列表数据构建 NumPy 数组 ```python list_data = [1, 2, 3] np_array = np.array(list_data) ``` - **内置函数生成** 使用特定模式自动生成数值序列或特殊矩阵 ```python # arange 函数用于生成等差数列并自动形成维数组 sequence = np.arange(0, 10, 2) # 起始值为0,结束值小于10,步长为2 print(sequence) # reshape 方法可以改变现有数组的形状而不修改其内容 reshaped_sequence = sequence.reshape((2, -1)) print(reshaped_sequence) ``` 上述例子展示了如何创建个简单的二维数组,并对其进行重塑操作[^2]。 #### 多维数组的操作 对于更复杂的场景,比如处理图像或其他形式的网格化数据时,可能需要用到更高维度的数组。下面的例子演示了基于条件筛选子集的方法: ```python x = np.arange(16).reshape((4, -1)) filtered_x = x[x[:, 3] % 3 == 0] print(filtered_x) ``` 这里先创建了个四行四列的整型数组,接着根据第三列元素能否被三整除作为过滤条件获取符合条件的行向量集合[^3]。 #### 文件存取支持 除了内存中的计算外,有时还需要将 ndarrays 存储至磁盘或者加载已有的二进制文件。为此,提供了简便易用的 I/O 接口: ```python # 将数组保存成 .npy 格式的文件 file_path = 'example.npy' data_to_save = np.random.rand(5, 5) np.save(file=file_path, arr=data_to_save) # 加载之前保存过的 .npy 文件回到内存中 loaded_data = np.load(file_path) print(loaded_data) ``` 此过程不仅简化了持久化的流程,而且保持了原始数据类型的完整性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值