4、numpy——创建数组
1、普通创建——np.array()
创建数组最简单的方法就是使用array函数。它接收一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组。
import numpy as np
a1 = np.array([1, 2, 3])
print(a1)
a2 = np.array([[1, 2, 3], [2, 3, 4]], dtype=np.float)
print(a2, a2.dtype, a2.shape)
运行结果:
import numpy as np
a1 = np.array([1, 2, 3])
print(a1)
a2 = np.array([[1, 2, 3], [2, 3, 4]], dtype=np.float)
print(a2, a2.dtype, a2.shape)
2、内置方法——np.asarray() np.fromiter()
- numpy.asarray # 类似于numpy.array
- numpy.fromiter # 此函数从任何可迭代对象构建一个ndarray对象,返回一个新的一维数组。
2.1 numpy.asarray
语法:
numpy.asarray(a, dtype = None, order = None)
参数:
| 参数 | 描述 |
|---|---|
| a | 任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表 |
| dtype | 输入出的数组类型,可选 |
| order | ‘C’为按行的 C 风格数组,’F’为按列的 Fortran 风格数组 |
x = [1, 2, 3] # x是python的列表类型 不是数组
a1 = np.asarray(x)
print(a1) # [1 2 3]
y = (4, 5, 6) # y是python的元组类型
a2 = np.asarray(y, dtype=float, order='F')
print(a2) # [4. 5. 6.]
2.2 numpy.formiter
语法:
numpy.fromiter(iterable, dtype, count = -1)
参数:
| 参数 | 描述 |
|---|---|
| iterable | 任何可迭代对象 |
| dtype | 返回数组的数据类型 |
| count | 需要读取的数据数量,默认为-1,读取所有数据 |
例子:
import numpy as np
x = range(5)
a = np.fromiter(x, float, 5)
print(a)
结果:
[0. 1. 2. 3. 4.]
3 内置方法——np.arange()创建
语法:
numpy.arange(start, stop, step, dtype)
参数:
start 范围的起始值,默认为0
stop 范围的终止值(不包含)
step 两个值的间隔,默认为1
dtype 返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。
例子:
import numpy as np
# 普通用法
a1 = np.arange(10)
#含起始点
a2 = np.arange(10, 20)
# 带步长
a3 = np.arange(10, 20, 2)
# 倒着
a4 = np.arange(20, 10, -1)
print(a1, '\n', a2, '\n', a3, '\n', a4)
执行结果:
[0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[10 12 14 16 18]
[20 19 18 17 16 15 14 13 12 11]
4、内置方法——等比等差创建
4.1 np.linspace (起始值,终止值,元素总数):创建一维等差数组。
语法:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数说明:
| 参数 | 描述 |
|---|---|
start |
序列的起始值 |
stop |
序列的终止值,如果endpoint为true,该值包含于数列中 |
num |
要生成的等步长的样本数量,默认为50 |
endpoint |
该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。 |
retstep |
如果为 True 时,生成的数组中会显示间距,反之不显示。 |
dtype |
ndarray 的数据类型 |
例子:
import numpy as np
a1 = np.linspace(0, 10, 5)
print("等差数组:", a1)
a2 = np.linspace(0, 10, 5, retstep=True, dtype=np.int8)
print(a2)
结果:
等差数组: [ 0. 2.5 5. 7.5 10. ]
(array([ 0, 2, 5, 7, 10], dtype=int8), 2.5
4.2 np.logspace(起始值,终止值,元素总数):创建一维等比数组。
语法:
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
base 参数意思是取对数的时候 log 的下标。
| 参数 | 描述 |
|---|---|
start |
序列的起始值为:base ** start |
stop |
序列的终止值为:base ** stop。如果endpoint为true,该值包含于数列中 |
num |
要生成的等步长的样本数量,默认为50 |
endpoint |
该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。 |
base |
对数 log 的底数。 |
dtype |
ndarray 的数据类型 |
例子:
import numpy as np
# 默认底数是 10
a = np.logspace(1.0, 2.0, num=10)
print(a)
# 将对数的底数设为2
a = np.logspace(0, 9, 10, base=2)
print(a)
结果:
[ 10. 12.91549665 16.68100537 21.5443469 27.82559402
35.93813664 46.41588834 59.94842503 77.42636827 100. ]
[ 1. 2. 4. 8. 16. 32. 64. 128. 256. 512.]
5、内置方法创建(特殊构造)
5.1 np.zeros(shape, dtype=float, order='C'):创建一个全0数组,shape要以元组格式传入
import numpy as np
a1 = np.zeros((3, 4), dtype=int)
print(a1)
a2 = np.zeros_like(a1)
print('副本:', a2)
# 结果:
[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
副本: [[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
5.2 np.ones(shape, dtype=None, order='C'):创建一个全1数组,shape要以元组格式传入。
import numpy as np
a1 = np.ones((2, 3), dtype=int)
# 返回具有与给定数组相同的形状和类型的数组
a2 = np.ones_like(a1)
print(a2)
结果:
[[1 1 1]
[1 1 1]]
5.3 np.empty(shape, dtype=None, order='C'):创建一个拥有趋近0值的数组,shape要以元组格式传入。
import numpy as np
x = np.empty((2, 3), dtype=int, order='C')
print(x)
'''
[[7209029 6422625 6619244]
[ 100 6553673 0]]
'''
5.4 np.eye(N, M=None, k=0, dtype=float, order='C'):创建一个对角矩阵,N代表行,M代表列。其中有个参数k默认值为0,它代表偏移量,正1时向主对角线右上偏移1位,负1时向主对角线左下偏移1位。
import numpy as np
a1 = np.eye(3, 3, dtype=int)
print(a1)
# 对角线下移
a2 = np.eye(3, 3, k=-1, dtype=int)
print('*************************\n', a2)
# 对角线向上移
a3 = np.eye(3, 3, k=1, dtype=int)
print('*************************\n', a3)
结果:
[[1 0 0]
[0 1 0]
[0 0 1]]
*************************
[[0 0 0]
[1 0 0]
[0 1 0]]
*************************
[[0 1 0]
[0 0 1]
[0 0 0]]
5.5 np.full(shape, fill_value, dtype=None, order='C'):创建一个以fill_value进行填充的数组,fill_value为想要填充的值
import numpy as np
a1 = np.full((3, 3),fill_value=5)
print(a1)
#结果
[[5 5 5]
[5 5 5]
[5 5 5]]
6、从随机函数创建
随机生成数组需要考虑的因素:
- 数据范围:区间,整数、小数
- 数据分布:均匀分布、正态分布、指定分布
- 数据形状:size
常用的随机函数
| 函数 | 解释 |
|---|---|
| rand(d0,d1,…) | [0,1]均匀分布 |
| randint(low,high,size) | [low,high)整数均匀分布 |
| choice(a,size,replace,p) | 指定数组指定概率分布 |
| randn(d0,d1,…) | 标准正态分布 |
[0,1]均匀分布
import numpy as np
a1 = np.random.rand(4, 4)
print(a1)
》》》
[[0.77052073 0.68006097 0.07924217 0.81588193]
[0.99678088 0.3900633 0.64834814 0.62874627]
[0.15473904 0.24785919 0.75724866 0.32946373]
[0.99667109 0.12276489 0.26126159 0.36696264]] 0.7705207279750877
[a,b)整数均匀分布
import numpy as np
a = np.random.randint(2, 5, (3, 3))
print(a)
>>>
[[3 4 2]
[4 2 2]
[2 4 4]]
指定数组指定概率分布
import numpy as np
a = np.random.choice([1, 2, 3, 4], size=(3, 4), replace=True, p=[0.1, 0.2, 0.3, 0.4])
print(a)
>>>
[[2 2 3 1]
[4 4 4 3]
[1 2 1 2]]
N(0,1)标准正态分布
import numpy as np
a = np.random.randn(4, 4)
print(a)
>>>
[[-1.94776705 1.82906205 0.45956222 -1.09130521]
[ 1.52936905 -2.38259868 -1.53460647 1.95028102]
[ 0.7148325 0.40825257 0.15732141 -0.45423096]
[-0.20530692 1.34386361 1.13883039 -0.14897777]]
4、numpy——创建数组的更多相关文章
- Numpy 创建数组2
Numpy数组除了可以使用底层 ndarray 构造器来创建外,也可以同伙一下集中方式来创建. numpty.empty numpy.empty方法用来创建一个指定形状(shaoe).数据类型(dty ...
- Numpy创建数组
# 导入numpy 并赋予别名 np import numpy as np # 创建数组的常用的几种方式(列表,元组,range,arange,linspace(创建的是等差数组),zeros(全为 ...
- Numpy 创建数组
ndarray 数组除了可以使用底层 ndarray 构造器来创建外, 也可以通过以下几种方式来创建. numpy.empty numpy.empty 方法用来创建一个指定形状(shape),数据类型 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 创建数组
import numpy as np x = np.empty([3,2], dtype = int) print (x) import numpy as np # 默认为浮点数 x = np.zer ...
- numpy的学习之路(1)——创建数组以及基本运算
需要导入的包 import numpy as np import pandas 一.利用numpy创建数组 1.1创建简单数组 array =np.array([[1,2,3], [2,3,4]]) ...
- numpy学习之创建数组
1.使用array函数创建数组 import numpy as np ndarray1 = np.array([1, 2, 3]) array([1, 2, 3]) ndarray2 = np.arr ...
- 『Numpy』内存分析_利用共享内存创建数组
引.内存探究常用函数 id(),查询对象标识,通常返回的是对象的地址 sys.getsizeof(),返回的是 这个对象所占用的空间大小,对于数组来说,除了数组中每个值占用空间外,数组对象还会存储数组 ...
- NumPy 从数值范围创建数组
NumPy 从数值范围创建数组 这一章节我们将学习如何从数值范围创建数组. numpy.arange numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下: ...
- NumPy 从已有的数组创建数组
NumPy 从已有的数组创建数组 本章节我们将学习如何从已有的数组创建数组. numpy.asarray numpy.asarray 类似 numpy.array,但 numpy.asarray 只有 ...
随机推荐
- Solr的学习使用之(八)facet实战
以下为统计media的数量功能,通过solrj,采用了facet方法,类似于sql的分组group by查询:这边的代码只是获取总媒体数量,其实他还有其他功能,去循环solrList的话,可以获取各个 ...
- MiniUI学习笔记1-新手必读
1.mini的全局方法 2.Ajax jQuery 拥有完整的 Ajax 兼容套件.其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据. 详细jQuery Ajax教程,可参考这里. 3. ...
- Simple Live System Using Nginx
1. Install nginx #Preinstalled directory install=/usr/local/nginx #Delete installed directory rm -rf ...
- Nginx优化总结
目录 Nginx性能优化概述 一. 压力测试工具实战 二.了解影响性能指标 三.系统性能优化 四.静态资源优化 Nginx性能优化概述 基于Nginx性能优化,那么在性能优化这一章,我们将分为如下几个 ...
- python基础--内置函数map
num_1=[1,2,10,5,3,7] # num_2=[] # for i in num_1: # num_2.append(i**2) # print(num_2) # def map_test ...
- AOP切面详解
一.spring-aop.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns= ...
- thinkphp url和路由
一.入口模块修改 修改public下的index 加入 define('BIND_MODULE','admin'); 即可将入门模块绑定到admin模块 <?php // [ 应用入口文件 ] ...
- 使用WebAPI流式传输大文件(在IIS上大于2GB)
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- Android逆向之旅---静态分析技术来破解Apk
一.前言 从这篇文章开始我们开始我们的破解之路,之前的几篇文章中我们是如何讲解怎么加固我们的Apk,防止被别人破解,那么现在我们要开始破解我们的Apk,针对于之前的加密方式采用相对应的破解技术,And ...
- asp.net开发微信公众平台----目录汇总-持续更新
1.[c#]asp.net微信公众平台开发(1)数据库设计 2.[c#]asp.net微信公众平台开发(2)多层架构框架搭建和入口实现 3.[c#]asp.net微信公众平台开发(3)微信消息封装及反 ...