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 只有 ...
随机推荐
- 【记录】@Transactional
参考链接:https://blog.csdn.net/nextyu/article/details/78669997 参考链接:https://www.xuebuyuan.com/3222458.ht ...
- SQL语句分类
SQL Structured Query Language SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 ...
- VS2012 改C# 模版
原始文件位置: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplatesCache\CSharp\Co ...
- Codeforces 1192B 全dfs序 + 线段树
题意:给你一颗树,每次会修改一条边的边权,问修改之后的树的直径是多少? 思路:来源于:https://www.cnblogs.com/TinyWong/p/11260601.html 得到树的全序df ...
- MacOS系統Flutter打包apk
一.打包前需要做一些基本设置的确认 1.应用名 2.权限设置 3.applicationId:应用唯一标识符 4.versionCode:版本号 5.versionName:版本名称 6.APP应用图 ...
- bzoj1875 [SDOI2009]HH去散步 矩阵快速幂
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1875 题解 如果没有这个"不能立刻沿着刚刚走来的路走回",那么这个题就是一 ...
- 前端每日实战:32# 视频演示如何用纯 CSS 创作六边形按钮特效
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/xjoOeM 可交互视频教程 此视频 ...
- Sublime-Text macOS 编译运行armadillo
{ "cmd" : ["g++ -std=c++14 -Wall -larmadillo -framework Accelerate ${file_name} -o ${ ...
- ELK Stack
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11488404.html ELK workflow log -> filebeat -> l ...
- 多边形面积计算公式 GPS经纬度计算面积
最近在做地图相关面积计算显示工作,百度了很多关于多边形面积计算方面公式和代码,只能说贼费劲,最终完成了把结果展示下 原理:鞋带公式 定义:所述鞋带式或鞋带算法(也称为高斯的面积公式和测量员的式 ...