Python学习Numpy大数据 爬虫Python AI Sql

numpy学习2:数组创建方式

2018-09-24  本文已影响15人  程序员欧阳

一、前言

Numerical Python,即数值Python包,是Python进行科学计算的一个基础包,所以是一个掌握其他Scipy库中模块的基础模块,一定需要先掌握该包的主要使用方式。

NumPy模块是Python的一种开源的数值计算扩展,是一个用python实现的科学计算包,主要包括:

其中,numpy有一个核心的数据结构,叫做ndarray

下面再了解一下ndarray的基本特征。

二、ndarray对象创建

可以通过numpy模块中的常用的几个函数进行创建ndarray多维数组对象,主要函数如下:

2.1、array函数

array对象的定义:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

上面的构造器接受以下参数:

序号 参数及描述
1. object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
2. dtype 数组的所需数据类型,可选。
3. copy 可选,默认为true,对象是否被复制。
4. order C(按行)、F(按列)或A(任意,默认)。
5. subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
6. ndimin 指定返回数组的最小维数。

看了这么多定义,下面看看具体的实例吧。

import numpy as np
#例子01
a = np.array([1,2,3,4,5])
print(a)
print(type(a))

输出:[1 2 3]
<class 'numpy.ndarray'>

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

输出:
[[1 2]
[3 4]]

#最小维度
a3 = np.array([1,2,3,4,5],ndmin = 3)
print(a3)

输出
[[[1 2 3 4 5]]]

ndmin这个参数的意思是,不管你给的数据的维度是多少,我总是会创建给出的最小的维度,比如这里ndmin=3,虽然给出的数据是一位的,但是也会创建一个三维的处理。

2.2、empty函数

构造器接受下列参数:

序号 参数及描述
1. Shape 空数组的形状,整数或整数元组
2. Dtype 所需的输出数组类型,可选
3. Order 'C'为按行的 C 风格数组,'F'为按列的 Fortran 风格数组

举例:

#数组元素为随机值:创建一个4*4的的矩阵,数据为随机
arr = np.empty((4,4),dtype = 'i1')
print(arr)

输出:
[[ 1 0 0 0]
[ 0 0 0 0]
[ 48 6 50 38]
[ -7 127 0 0]]

#例
arr = np.zeros((3,3))
print(arr)
# 自定义类型
arr = np.zeros((3,3), dtype =  [('x',  'i2'),  ('y',  'i2')])
print(arr)
arr = np.ones((2,3,4))
print(arr)
arr = np.ones((3,3), dtype =  [('x',  'i4'),  ('y',  'i4')])
print(arr)

输出:

[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]]
[[(1, 1) (1, 1) (1, 1)]
 [(1, 1) (1, 1) (1, 1)]
 [(1, 1) (1, 1) (1, 1)]]

2.3、通过列表,元祖,元祖列表创建方式

这些主要是通过列表,元祖,元祖列表来创建的方式。

#来自列表
arr = [1,2,3,4]
arr2 = np.asarray(arr)
print(arr2)
print(type(arr))
print(type(arr2))

输出:
[1 2 3 4]
<class 'list'>
<class 'numpy.ndarray'>

#来自元组
arr = (1,2,3,4)
arr2 = np.asarray(arr)
print(arr2)
print(type(arr))
print(type(arr2))
#来自元组列表
arr = [(1,2,3,4),(5,6,7,8)]
arr2 = np.asarray(arr)
print(arr2)
print(type(arr))
print(type(arr2))

2.4、通过Numpy 来自数值范围的数组(arange、linespace、logspace)

arr = np.arange(1,20,5,dtype = float)
print(arr)

输出:
[ 1. 6. 11. 16.]

start 起始值
stop 结束值
num 生成等间隔样例的数量,默认为50
endpoint 序列中是否包含stop 值 默认为 True
arr = np.linspace(10,20,9)
print(arr)

arr = np.linspace(10,20,5,endpoint=False)
print(arr)

arr = np.linspace(10,20,5,retstep=True)
print(arr) #返回步长

输出:
[10. 11.25 12.5 13.75 15. 16.25 17.5 18.75 20. ]
[10. 12. 14. 16. 18.]
(array([10. , 12.5, 15. , 17.5, 20. ]), 2.5)

1. start 起始值是base ** start
2. stop 终止值是base ** stop
3. num 范围内的数值数量,默认为50
4. endpoint 如果为true,终止值包含在输出数组当中
5. base 对数空间的底数,默认为10
6. dtype 输出数组的数据类型,如果没有提供,则取决于其它参数
arr = np.logspace(1,10,10,base = 2)
print(arr)

输出:
[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]

2.5、random创建方式

arr = np.random.rand(9).reshape(3,3)
print(arr)

arr = np.random.rand(3,2,3)
print(arr)

arr = np.random.randn(9).reshape(3,3)
print(arr)

arr = np.random.randn(3,2,3)
print(arr)

arr = np.random.randint(1,9,size = (2,4))
print(arr)

arr = np.random.random_integers(1,9,size =(2,4))
print(arr)

arr = np.random.random((3,2,3))
print(arr)

arr = np.random.randn(3,2,3)
print(arr)
上一篇下一篇

猜你喜欢

热点阅读