ndarray 多维数组(N Dimension Array)

NumPy数组是一个多维的数组对象(矩阵),称为ndarray,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点。

注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型

ndarray拥有的属性

  1. ndim属性:维度个数
  2. shape属性:维度大小
  3. dtype属性:数据类型

ndarray的随机创建

通过随机抽样 (numpy.random) 生成随机数据。

示例代码:

# 导入numpy,别名np
import numpy as np # 生成指定维度大小(3行4列)的随机多维浮点型数据(二维),rand固定区间0.0 ~ 1.0
arr = np.random.rand(3, 4)
print(arr)
print(type(arr)) # 生成指定维度大小(3行4列)的随机多维整型数据(二维),randint()可以指定区间(-1, 5)
arr = np.random.randint(-1, 5, size = (3, 4)) # 'size='可省略
print(arr)
print(type(arr)) # 生成指定维度大小(3行4列)的随机多维浮点型数据(二维),uniform()可以指定区间(-1, 5)
arr = np.random.uniform(-1, 5, size = (3, 4)) # 'size='可省略
print(arr)
print(type(arr)) print('维度个数: ', arr.ndim)
print('维度大小: ', arr.shape)
print('数据类型: ', arr.dtype)

运行结果:

[[ 0.09371338  0.06273976  0.22748452  0.49557778]
[ 0.30840042 0.35659161 0.54995724 0.018144 ]
[ 0.94551493 0.70916088 0.58877255 0.90435672]]
<class 'numpy.ndarray'> [[ 1 3 0 1]
[ 1 4 4 3]
[ 2 0 -1 -1]]
<class 'numpy.ndarray'> [[ 2.25275308 1.67484038 -0.03161878 -0.44635706]
[ 1.35459097 1.66294159 2.47419548 -0.51144655]
[ 1.43987571 4.71505054 4.33634358 2.48202309]]
<class 'numpy.ndarray'> 维度个数: 2
维度大小: (3, 4)
数据类型: float64

ndarray的序列创建

1. np.array(collection)

collection 为 序列型对象(list)、嵌套序列对象(list of list)。

示例代码:

# list序列转换为 ndarray
lis = range(10)
arr = np.array(lis) print(arr) # ndarray数据
print(arr.ndim) # 维度个数
print(arr.shape) # 维度大小 # list of list嵌套序列转换为ndarray
lis_lis = [range(10), range(10)]
arr = np.array(lis_lis) print(arr) # ndarray数据
print(arr.ndim) # 维度个数
print(arr.shape) # 维度大小

运行结果:

# list序列转换为 ndarray
[0 1 2 3 4 5 6 7 8 9]
1
(10,) # list of list嵌套序列转换为 ndarray
[[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]]
2
(2, 10)

2. np.zeros()

指定大小的全0数组。注意:第一个参数是元组,用来指定大小,如(3, 4)。

3. np.ones()

指定大小的全1数组。注意:第一个参数是元组,用来指定大小,如(3, 4)。

4. np.empty()

初始化数组,不是总是返回全0,有时返回的是未初始的随机值(内存里的随机值)。

示例代码(2、3、4):

# np.zeros
zeros_arr = np.zeros((3, 4)) # np.ones
ones_arr = np.ones((2, 3)) # np.empty
empty_arr = np.empty((3, 3)) # np.empty 指定数据类型
empty_int_arr = np.empty((3, 3), int) print('------zeros_arr-------')
print(zeros_arr) print('\n------ones_arr-------')
print(ones_arr) print('\n------empty_arr-------')
print(empty_arr) print('\n------empty_int_arr-------')
print(empty_int_arr)

运行结果:

------zeros_arr-------
[[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]] ------ones_arr-------
[[ 1. 1. 1.]
[ 1. 1. 1.]] ------empty_arr-------
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]] ------empty_int_arr-------
[[0 0 0]
[0 0 0]
[0 0 0]]

5. np.arange() 和 reshape()

arange() 类似 python 的 range() ,创建一个一维 ndarray 数组。

reshape() 将 重新调整数组的维数。

示例代码(5):

# np.arange()
arr = np.arange(15) # 15个元素的 一维数组
print(arr)
print(arr.reshape(3, 5)) # 3x5个元素的 二维数组
print(arr.reshape(1, 3, 5)) # 1x3x5个元素的 三维数组

运行结果:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

[[ 0  1  2  3  4]
[ 5 6 7 8 9]
[10 11 12 13 14]] [[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]]

6. np.arange() 和 random.shuffle()

random.shuffle() 将打乱数组序列(类似于洗牌)。

示例代码(6):

arr = np.arange(15)
print(arr) np.random.shuffle(arr)
print(arr)
print(arr.reshape(3,5))

运行结果:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

[ 5  8  1  7  4  0 12  9 11  2 13 14 10  3  6]

[[ 5  8  1  7  4]
[ 0 12 9 11 2]
[13 14 10 3 6]]

ndarray的数据类型

1. dtype参数

指定数组的数据类型,类型名+位数,如float64, int32

2. astype方法

转换数组的数据类型

示例代码(1、2):

# 初始化3行4列数组,数据类型为float64
zeros_float_arr = np.zeros((3, 4), dtype=np.float64)
print(zeros_float_arr)
print(zeros_float_arr.dtype) # astype转换数据类型,将已有的数组的数据类型转换为int32
zeros_int_arr = zeros_float_arr.astype(np.int32)
print(zeros_int_arr)
print(zeros_int_arr.dtype)

运行结果:

[[ 0.  0.  0.  0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
float64 [[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
int32

ndarray的创建与数据类型的更多相关文章

  1. NuSOAP笔记:如何创建复杂数据类型

    PHP已经有了内置的SOAP扩展,但是它不具备自动生成WSDL的能力,所以很多时候,NuSOAP还是有一定诱惑力的. 在应用稍微复杂点的时候,单靠integer, string等简单数据类型是不能满足 ...

  2. NumPy学习_00 ndarray的创建

    1.使用array()函数创建数组 参数可以为:单层或嵌套列表:嵌套元组或元组列表:元组或列表组成的列表 # 导入numpy库 import numpy as np # 由单层列表创建 a = np. ...

  3. MariaDB数据库 ----数据库简介,用户管理,数据库创建,数据类型、数据增删改(实例演示)

    数据库简介 数据库--即电子文件柜,用户可以对文件中的数据进行增,删,改,查等操作. 数据库分类 关系型数据库 关系型数据库管理系统(Relational Database Management Sy ...

  4. 科学计算工具Numpy

    参考学习资料: Python.NumPy和SciPy介绍:http://cs231n.github.io/python-numpy-tutorial NumPy和SciPy快速入门:https://d ...

  5. mysql中,创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?

    需求描述: 在mysql数据库中,创建包含json数据类型的表.记录下,在创建的过程中,需要注意的问题. 操作过程: 1.通过以下的语句,创建包含json数据类型的表 mysql> create ...

  6. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

    一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...

  7. 数据类型-DataFrame

    数据类型-DataFrame DataFrame是由多个Series数据列组成的表格数据类型,每行Series值都增加了一个共用的索引 既有行索引,又有列索引 行索引,表明不同行,横向索引,叫inde ...

  8. NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构

    本文摘自<用Python做科学计算>,版权归原作者所有. 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取.结构体数组存取.内存 ...

  9. Numpy基础之创建与属性

    import numpy as np ''' 1.数组的创建:np.array([]) 2.数组对象的类型:type() 3.数据类型:a.dtype 4.数组的型shape:(4,2,3) 5.定义 ...

随机推荐

  1. Linux 下硬链接和软链接的说明

    Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln 命令产生硬链接. 硬连接 硬连接指通过索引节点来进行连接.在 Li ...

  2. 010——VUE中使用lodash库减少watch对后台请求的压力

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. sql语句遇到错误: The used SELECT statements have a different number of columns :

    这是因为使用union的两个SQL语句产生的记录的表结构不一致. 必须是结构完全一致的记录集合才可以使用UNION. 以上就是两个表的字段不一样,导致,所以大家可以检查下.

  4. 【网络】<网络是怎样连接的>笔记

    [一] 浏览器 http://user:pwd@hosturl:port/dir/of/file 基本思路: 1.1 生成http请求信息 包含“对什么”“进行怎样的操作”两个方法.一般常用操作是GE ...

  5. Android process 的启动流程

    Android process 的启动流程 1.android启动时所运行的进程: USER    PID     PPID    VSIZE    RSS    WCHAN         PC   ...

  6. Android 进阶8:进程通信之 Binder 机制浅析

    读完本文你将了解: IBinder Binder Binder 通信机制 Binder 驱动 Service Manager Binder 机制跨进程通信流程 Binder 机制的优点 总结 Than ...

  7. 3.了解linux系统以及搭建学习环境

    目录: 1.linux的前世今生. 2.企业如何选择linux系统? 3.如何在虚拟机上安装linux系统?搭建学习环境. 1.linux的前世今生. 1).起源:先是贝尔实验室的Unix系统,因为各 ...

  8. canvas 绘制环形进度条

    结果: 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...

  9. 开发Wordpress主题时没有特色图片的功能

    在自己开发Wordpress主题的时候,发现右下方没有了之前见到的特色图片(Featured Image)功能模块 1.找到后台右上方的显示选项模块,下拉之后启用即可 2.如果以上步骤找不到该选项,那 ...

  10. JavaScript例子

    模态框(JavaScript) <!DOCTYPE html> <html lang="en"> <head> <meta charset ...