python学习---numpy

https://www.numpy.org.cn/user/quickstart.html#%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C

数组的创建:

创建数组有5种常规机制:

  1. 从其他Python结构(例如,列表,元组)转换
  2. numpy原生数组的创建(例如,arange、ones、zeros, linespace等)
  3. 从磁盘读取数组,无论是标准格式还是自定义格式
  4. 通过使用字符串或缓冲区从原始字节创建数组
  5. 使用特殊库函数(例如,random)

https://www.numpy.org.cn/user/basics/creation.html#numpy%E5%8E%9F%E7%94%9F%E6%95%B0%E7%BB%84%E7%9A%84%E5%88%9B%E5%BB%BA

numpy的基本变属性:

  • ndarray.ndim - 数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。
  • ndarray.shape - 数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有 n 行和 m 列的矩阵,shape 将是 (n,m)。因此,shape 元组的长度就是rank或维度的个数 ndim
  • ndarray.size - 数组元素的总数。这等于 shape 的元素的乘积。
  • ndarray.dtype - 一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。
  • ndarray.itemsize - 数组中每个元素的字节大小。例如,元素为 float64 类型的数组的 itemsize 为8(=64/8),而 complex32 类型的数组的 itemsize 为4(=32/8)。它等于 ndarray.dtype.itemsize 。
  • ndarray.data - 该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素

数组的索引:

分为以下几类:

  1.单元素索引;

  2.切片和跨步索引;

  3.索引数组

  4.索引多维数组;

  5.组合切片与数组索引;

数组的基本操作:

  1. +-*/:广播类型的;

  2.通用函数:点乘(np.dot(a,b)

    常用的是,dot, sum,mean, max, min, std,

另见这些通函数

all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, INV , lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort, std, sum, trace, transpose, var, vdot, vectorize, where

  3. 常用的API

以下是按类别排序的一些有用的NumPy函数和方法名称的列表。有关完整列表,请参阅参考手册里的常用API

https://www.numpy.org.cn/user/quickstart.html#%E5%8A%9F%E8%83%BD%E5%92%8C%E6%96%B9%E6%B3%95%E6%A6%82%E8%BF%B0

  4.增删改查:

增:

插入:insert

numpy.insert(arr,obj,value,axis=None)

value为插入的数值

arr:为目标向量

obj:为目标位置

value:为想要插入的数值

axis:为插入的维度

np.insert(a,1,[1,1,1,1],0)
Out[309]:
array([[ 0,  1,  2,  3],
       [ 1,  1,  1,  1],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

来自 <https://blog.csdn.net/weixin_35834894/article/details/100114021>

append

将values插入到目标arr的最后。

注意,这里values跟arr应该为相同维度的向量,例如,如下第一个为错误情况。

a
Out[312]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

np.append(a,[[1,1,1,1]],axis=0)
Out[313]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [ 1,  1,  1,  1]])

来自 <https://blog.csdn.net/weixin_35834894/article/details/100114021>

删:

lines_rest = np.delete(lines,0,0)

#第一个参数:要处理的矩阵,第二个参数,处理的位置,第三个参数,0表示按照行删除,1表示按照列删除

#返回值为,删除后的剩余元素构成的矩阵

来自 <https://www.cnblogs.com/shuangcao/p/11326505.html>

改:

直接索引之后直接赋值;

查:

查询

有两种方式

一种就是直接用切片的方式

a[:,:2]
array([[0, 1],
       [4, 5],
       [8, 9]])

第二种就是用where

np.where(a>2)
(array([0, 1, 1, 1, 1, 2, 2, 2, 2]), array([3, 0, 1, 2, 3, 0, 1, 2, 3]))

来自 <https://blog.csdn.net/weixin_35834894/article/details/100114021>

原文地址:https://www.cnblogs.com/Ian-learning/p/14020184.html