IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 默默无名的西大研究生学习的第二天——NumPy2 -> 正文阅读

[Python知识库]默默无名的西大研究生学习的第二天——NumPy2


前言

接着上一篇文章对NumPy的N维数组ndarray的一些知识点再进行更进一步的学习与记录。


提示:以下是本篇文章正文内容,下面案例可供参考

1.2 ndarry的数据类型

array的数据类型(dtype),dtype是NumPy能够与其他系统数据灵活交互的原因。数据的dtype通常都是按照一个方式命名:类型名,比如float和int,后面再接上表明每个元素位数的数字。具体可参照下表所示:

类型类型代码描述
int8,uint8i1, u1有符号和无符号的8位整数
int16, uint16i2, u2有符号和无符号的16位整数
int32, uint32i4, u4有符号和无符号的32位整数
int62 ,uint64i8 ,u8有符号和无符号的64位整数
float16f2半精度浮点数
float32f4或f标准单精度浮点数;兼容C语言float
float64f8或d标准双精度浮点数;兼容C语言double和 python float
float128f16或g拓展精度浮点数
complex64,complex128,complex256c8, c16, c32分别基于32位、64位、128位浮点数的复数
bool?布尔值,存储True或False
objectOPython object类型
string_S修正的ASCⅡ字符串类型;例如生成一个长度为10的字符串类型,使用‘S10’
unicode_U修正的Unicode类型;例如生成一个长度为10的Unicode类型,使用‘U10’

array的数据类型可以根据关键字参数dtype=改变,实例代码如下:

arr1 = np.array([1, 2, 3, 4, 5],dtype=np.int64)
print(arr1.dtype)
-------------------------------------------------
int64

也可以使用astype方法转换数组的数据类型

arr2 = arr1.astype(np.float64)
print(arr2.dtype)
------------------------------------------------
float64

在任意使用数据类型转换时要注意以下几点:
1)整数–>浮点型,数字末尾加小数点

arr1 = np.array([1, 2, 3, 4, 5], dtype=np.float64)
print(arr1)
print(arr1.dtype)
-------------------------------------------------
[1. 2. 3. 4. 5.]
float64

2)浮点型–>整数,小数点后的部分将被消除

arr1 = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
arr2 = arr1.astype(np.int32)
print(arr2)
--------------------------------------------------
[ 3 -1 -2  0 12 10]

3)数字含义的字符串 --> 数字(整型或者浮点型)

arr1 = np.array(['1.25', '-9.6', '42'],dtype=np.string_)
arr2 = arr1.astype(float)
print(arr2)
---------------------------------------------------
[ 1.25 -9.6  42.  ]

1.3 NumPy数组算术

数组允许你进行批量操作而无须任何for循环。NumPy用户称这种特性为向量化。任何在两个等尺寸数组之间的算术操作都应用了逐元素操作的方式。

arr = np.array([[1.,2.,3.],[4.,5.,6.]])
arr1 = arr * arr
print(arr1)
---------------------------------------------
[[ 1.  4.  9.]
 [16. 25. 36.]]

而有趣的是,同尺寸数组之间的比较会产生一个布尔值数组。

arr2 = np.array([[0., 4., 1.], [6., 9., 5.]])
arr1 = arr2 > arr
print(arr1)
---------------------------------------------
[[False  True False]
 [ True  True False]]

1.4 基础索引与切片

NumPy中数组的索引与切片操作和Python的列表的索引与切片的操作很类似,而不同点在如果你传入了一个数值给数组的切片,数值会被传递到整个切片当中。区别于Python的内建列表,数组的切片是原数组的视图。这意味着数据并不是被复制了,任何对于视图的修改都会反映到原数组上。我们可以从下面的实验看到这个现象:

list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr = np.array(list)
print(list)
print(arr)
print('--------------------------------1')
list_slice = list[5:8]
arr_slice = arr[5:8]
print(list_slice)
print(arr_slice)
print('--------------------------------2')
arr_slice[1] = 12345
list_slice[1] = 12345
print(list_slice)
print(arr_slice)
print(list)
print(arr)
print('--------------------------------3')

------------------------------------------------------------
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0 1 2 3 4 5 6 7 8 9]
--------------------------------1
[5, 6, 7]
[5 6 7]
--------------------------------2
[5, 12345, 7]
[    5 12345     7]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[    0     1     2     3     4     5 12345     7     8     9]
--------------------------------3

arr_slice不写切片值的[:]将会引用数组的所有值:

arr_slice[:] = 64
print(arr)
------------------------------------------------------------
[ 0  1  2  3  4 64 64 64  8  9]

如果你想要的是一份数组的拷贝而不是视图可以使用.copy()。

aa = arr[5:8].copy()
aa[:] = 99
print(arr)
------------------------------------------------------------
[ 0  1  2  3  4 64 64 64  8  9]

在一个一维数组中,每个索引值对应的元素是一个值;而再二维数组中,每个索引值对应的元素不再是一个值,而是一个一维数组。

arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a = arr2d[2]
print(a)
---------------------------------------------------------
[7 8 9]

你可以通过传递一个索引的逗号分隔列表去选择单个元素。或者是类似c语言二维数组的索引方式。

a = arr2d[0,1]
print(a)
a = arr2d[0][1]
print(a)
-----------------------------------------------------------
2
2

1.4.1 二维数组的切片索引

对于二维数组的切片与一维数组的切片有所不同。

arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a = arr2d[:2]
print(a)
------------------------------------------------------------
[[1 2 3]
 [4 5 6]]

表达式arr2d[:2]的含义为选择arr2d的前两行。
想要进行多组切片,其实与多组索引类似([])

a = arr2d[:2,1:]
print(a)
------------------------------------------------------------
[[2 3]
 [5 6]]

如果将索引和切片混合,就可以得到低维度的切片。
例如我们可以选择第三行,只选择后两列

a = arr2d[2,1:]
print(a)
------------------------------------------------------------
[8 9]

我们还可以选择第三列,但是只选择第二行

a = arr2d[:2,2]
print(a)
------------------------------------------------------------
[3 6]

需要注意的是,单独一个冒号表示选择整个轴上的数组。

a = arr2d[2:,:]
print(a)
a = arr2d[2,:]
print(a)
------------------------------------------------------
[[7 8 9]]
[7 8 9]

第二天下班!!!!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:49:11  更:2022-09-30 00:49:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:08:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码