NumPy之array

ndarray是一个包含了相同元素类型和大小的多维数组。

创建数组

1、使用系统方法

empty(shape[, dtype, order])     # 根据给定的参数创建一个ndarray数组,值用随机数填充

例:

>>> np.empty([2, 2])
array([[ -9.74499359e+001,   6.69583040e-309],
       [  2.13182611e-314,   3.06959433e-309]])

empty_like(a[, dtype, order, subok])  #和empty不同的是,需要给出一个array的模板,就是a参数,新生成的ndarray继承了a的shape和dtype

例:

>>> a = ([1,2,3], [4,5,6]) 
>>> np.empty_like(a)
array([[-1073741821, -1073741821,           3],    #random
       [          0,           0, -1073741821]])

eye(N[, M, k, dtype])           #生成一个N行M列的数组,K指定一条斜线,这条斜线上的值都是1,数组的其他元素维0

例:生成一个5行4列的数组,索引为1的斜线上全部是1,其他元素为0

>>> np.eye(5,4,1)
array([[ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])

identity(n[, dtype])   #生成一个正方形的数组即N×N类型的数组,且索引万恶哦0的斜线上维1,其他元素维0

例:

>>> np.identity(3)
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],       
       [ 0.,  0.,  1.]])

ones(shape[, dtype, order])   #生成一个指定shape和dtype的数组,用1填充

例:

>>> np.ones(5)
array([ 1.,  1.,  1.,  1.,  1.])
>>> np.ones((2, 1))
array([[ 1.],
       [ 1.]])

ones_like(a[, dtype, order, subok])  #和ones的区别就是需要给定一个dnarray模板,新生成的array继承了a的shape和dtype

例:

>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> x
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.ones_like(x)
array([[1, 1, 1],
       [1, 1, 1]])

zeros(shape[, dtype, order])   #根据给定的shape,和dtype生成一个由0填充的数组

例:

>>> np.zeros(5)
array([ 0.,  0.,  0.,  0.,  0.])

zeros_like(a[, dtype, order, subok])   #根据a模板生成一个新的用0 填充的ndarray数组

例:

>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> x
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.zeros_like(x)
array([[0, 0, 0],
       [0, 0, 0]])

full(shape, fill_value[, dtype, order])   #用指定的值填充数组

例:

>>> np.full((2, 2), 10)
array([[10, 10],
       [10, 10]])

full_like(a, fill_value[, dtype, order, subok])   #根据a模板的shape和dtype生成一个数组,如果指定的填充数不是a的dtype类型,会向下取整,这时候也可以指定新数组的dtype类型。

例:

>>> x = np.arange(6, dtype=np.int)
>>> np.full_like(x, 1)
array([1, 1, 1, 1, 1, 1])
>>> np.full_like(x, 0.1)   #如果full_value设置为1.2则就是用1填充
array([0, 0, 0, 0, 0, 0])
>>> np.full_like(x, 0.1, dtype=np.double)
array([ 0.1,  0.1,  0.1,  0.1,  0.1,  0.1])
>>> np.full_like(x, np.nan, dtype=np.double)
array([ nan,  nan,  nan,  nan,  nan,  nan])

2、用指定的数据填充

array(object[, dtype, copy, order, subok, ndmin])  #用对象直接填充数组

例:

>>> np.array([1, 2, 3])  #一维数组
array([1, 2, 3])
>>> np.array([[1, 2], [3, 4]])   #二维数组
array([[1, 2],
       [3, 4]])
>>> np.array([1, 2, 3], ndmin=2)   #只有一个元素的二维数组
array([[1, 2, 3]])
>>> np.array(np.mat(‘1 2; 3 4‘))    #从子类创建
array([[1, 2],
       [3, 4]])

asarray(a[, dtype, order])   #把lists, lists of tuples, tuples, tuples of tuples, tuples of lists and ndarrays转化为array

例:

>>> a = [1, 2]
>>> np.asarray(a)
array([1, 2])

asanyarray(a[, dtype, order])  #通过ndarray的子类创建array

>>> a = [1, 2]
>>> np.asanyarray(a)
array([1, 2])

ascontiguousarray(a[, dtype]) #返回一个地址连续的数组(C  order)

>>> x = np.arange(6).reshape(2,3)
>>> np.ascontiguousarray(x, dtype=np.float32)
array([[ 0.,  1.,  2.],
       [ 3.,  4.,  5.]], dtype=float32)
>>> x.flags[‘C_CONTIGUOUS‘]
True

asmatrix(data[, dtype])    # 把数组转化为矩阵,新的变量没有copy数据,只是指向原有的数据

>>> x = np.array([[1, 2], [3, 4]])
>>> m = np.asmatrix(x)
>>> x[0,0] = 5
>>> m
matrix([[5, 2],        [3, 4]])

copy(a[, order])   #顾名思义就是复制的意思

>>> x = np.array([1, 2, 3])
>>> y = x
>>> z = np.copy(x)
>>> x[0] = 10
>>> x[0] == y[0]
True
>>> x[0] == z[0]
False

frombuffer(buffer[, dtype, count, offset])  #把buffer数据转化为1维数组ps:如果数据不是机器字节顺序,需要指定他的dtype类型

>>> s = ‘hello world‘
>>> np.frombuffer(s, dtype=‘S1‘, count=5, offset=6)
array([‘w‘, ‘o‘, ‘r‘, ‘l‘, ‘d‘],
      dtype=‘|S1‘)

frombuffer(buffer[, dtype, count, offset]) #从文件读取数据 ps:该方法不长用用save替代

fromfunction(function, shape, **kwargs) #用方法计算出来的数据填充数组

>>> np.fromfunction(lambda i, j: i + j, (3, 3), dtype=int)
array([[0, 1, 2],
       [1, 2, 3],       
       [2, 3, 4]])

fromiter(iterable, dtype[, count]) #通过迭代器生成一个一维数组

>>> iterable = (x*x for x in range(5))
>>> np.fromiter(iterable, np.float)
array([  0.,   1.,   4.,   9.,  16.])

fromstring(string[, dtype, count, sep])  #把二进制流或者字符串转化维数组

>>> np.fromstring(‘\x01\x02‘, dtype=np.uint8)
array([1, 2], dtype=uint8)
>>> np.fromstring(‘1 2‘, dtype=int, sep=‘ ‘)
array([1, 2])
>>> np.fromstring(‘1, 2‘, dtype=int, sep=‘,‘)
array([1, 2])
>>> np.fromstring(‘\x01\x02\x03\x04\x05‘, dtype=np.uint8, count=3)
array([1, 2, 3], dtype=uint8)
arange([start,] stop[, step,][, dtype])

#根据给定的区间创建连续的值

>>> np.arange(3)
array([0, 1, 2])
>>> np.arange(3.0)
array([ 0.,  1.,  2.])
>>> np.arange(3,7)
array([3, 4, 5, 6])
>>> np.arange(3,7,2)
array([3, 5])

numpu.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None) #arrange一样,主要是生成浮点型

>>> np.linspace(2.0, 3.0, num=5)
array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ])
>>> np.linspace(2.0, 3.0, num=5, endpoint=False)
array([ 2. ,  2.2,  2.4,  2.6,  2.8])
>>> np.linspace(2.0, 3.0, num=5, retstep=True)
(array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)
时间: 2024-10-21 02:02:58

NumPy之array的相关文章

numpy 往array里添加一个元素

首先这里p_arr为一个numpy的array,p_为一个元素 p_arr = np.concatenate((p_arr,[p_])) # 先将p_变成list形式进行拼接,注意输入为一个tuple p_arr = np.append(p_arr,p_) #直接向p_arr里添加p_ #注意一定不要忘记用赋值覆盖原p_arr不然不会变 原文地址:https://www.cnblogs.com/cymwill/p/8118135.html

numpy中 array数组的shape属性

numpy.array 的shape属性理解 在码最邻近算法(K-Nearest Neighbor)的过程中,发现示例使用了numpy的array数组管理,其中关于array数组的shape(状态)属性,下面是对应的理解 numpy 创建的数组都有一个shape属性,它是一个元组,返回各个维度的维数.有时候我们可能需要知道某一维的特定维数. 二维情况 >>> import numpy as np >>> y = np.array([[1,2,3],[4,5,6]]) &

Numpy np.array 相关常用操作学习笔记

1.np.array构造函数 用法:np.array([1,2,3,4,5]) 1.1 numpy array 和 python list 有什么区别? 标准Python的列表(list)中,元素本质是对象.如:L = [1, 2, 3],需要3个指针和三个整数对象,对于数值运算比较浪费内存和CPU.因此,Numpy提供了ndarray(N-dimensional array object)对象:存储单一数据类型的多维数组. 1.2 如何强制生成一个 float 类型的数组 d = np.arr

python numpy复制array

numpy快速复制array 前段时间想到一个算法,需要实现array的自我复制,直接上代码,两种复制方式, 整体复制 a=[[10,10,50,50],[10,10,40,50]] np.tile(a,[4,1])#即向下复制4次,向右不复制 单行复制 a=[[10,10,50,50],[10,10,40,50]] np.tile(b,[1,4]).reshape([-1,4])#即每一行复制4次 原文地址:https://www.cnblogs.com/double-t/p/11063722

Numpy中array和matrix转换

s=[[4,2],[3,2],[3,1]] A =mat(s) A matrix([[4, 2], [3, 2], [3, 1]]) ss = A.getA() ss array([[4, 2], [3, 2], [3, 1]])

Numpy的array数组和标量之间的运算

矢量化 数组很重要,因为它使你不用编写循环即可对数据执行批量运算.这通常就叫做矢量化(vectorzation) 数组与数组的运算 数组与标量的算术运算

python numpy array 的一些问题

1 将list转换成array 如果list的嵌套数组是不规整的,如 a = [[1,2], [3,4,5]] 则a = numpy.array(a)之后 a的type是ndarray,但是a中得元素a[i]都还是list 如果a = [[1,2], [3,4]] 则a = numpy.array(a)之后 a的type是ndarray,里面的元素a[i]也是ndarray 2 flatten函数 Python自身不带有flatten函数,numpy中array有flatten函数. 同1的一样

numpy array或matrix的交换两行

A[j,:] = A[maxindex,:] # 注意这样是一个很低级的错误!这样只是赋值 我们很容易想起python中的两个值交换一句搞定不用引入中间变量 a, b = b, a 但在numpy的array或matrix中,这样是错误的 需要使用选中两行来互换: A[[i, j], :] = A[[j, i], :] # 实现了第i行与第j行的互换 下面看一个实例: import numpy as np m = np.mat([[1. ,2 ,-1],[2,1,-2],[-3,1,1]]) p

Python与线性代数——Numpy中的matrix()和array()的区别

Numpy中matrix必须是2维的,但是 numpy中array可以是多维的(1D,2D,3D····ND).matrix是array的一个小的分支,包含于array.所以matrix 拥有array的所有特性. matrix() 和 array() 的区别,主要从以下方面说起: 矩阵生成方式不同 import numpy as np a1 = np.array([[1, 2], [3, 4]]) b1 = np.mat([[1, 2], [3, 4]]) a2 = np.array(([1,