numpy笔记一(数组基础)

NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵。

安装

首先需要安装python,直接从官网下载安装包进行安装即可。然后使用pip命令安装numpy,命令如下:

pip install numpy

数据类型

numpy是用来做矩阵处理的,矩阵中的数据类型如下:

类型 描述
bool 用一位存储的布尔类型(值为TRUE或FALSE)
inti 由所在平台决定其精度的整数(一般为int32或int64)
int8 整数,范围为128至127
int16 整数,范围为32 768至32 767
int32 整数,范围为231至231 1
int64 整数,范围为263至263 1
uint8 无符号整数,范围为0至255
uint16 无符号整数,范围为0至65 535
uint32 无符号整数,范围为0至2321
uint64 无符号整数,范围为0至2641
float16 半精度浮点数(16位):其中用1位表示正负号, 5位表示指数, 10位表示尾数
float32 单精度浮点数(32位):其中用1位表示正负号, 8位表示指数, 23位表示尾数
float64或float 双精度浮点数(64位):其中用1位表示正负号, 11位表示指数, 52位表示尾数
complex64 复数,分别用两个32位浮点数表示实部和虚部
complex128或complex 复数,分别用两个64位浮点数表示实部和虚部

数组

使用arange,array创建数组。

import numpy as np

#arange创建一维数组对象
a = np.arange(10,dtype=np.int64)
print(a," type:",a.dtype," size:",a.size," itemsize:",a.itemsize," nbytes:",a.nbytes)

#分片,索引
print("a[2]=",a[2],"  a[2:4]=",a[2:4],"  a[5:]=",a[5:],"  a[0:10:2]=",a[0:10:2],"  a[::-1]=",a[::-1])

#使用array创建多维数组
a = np.array([[1,2,3],[1,2,3],[1,2,3]])
print(a)

输出结果如下:

[0 1 2 3 4 5 6 7 8 9]  type: int64  size: 10  itemsize: 8  nbytes: 80
a[2]= 2   a[2:4]= [2 3]   a[5:]= [5 6 7 8 9]   a[0:10:2]= [0 2 4 6 8]   a[::-1]= [9 8 7 6 5 4 3 2 1 0]
[[1 2 3]
 [1 2 3]
 [1 2 3]]

维度变换

使用reshape,resize把一维数组变为多维数组
使用flatten,ravel把多维数组变为一维数组,
使用transpose和T转置数组,行变列,列变行。

import numpy as np

#使用reshape变换数组形状,返回新数组,原数组不变,相对应的resize会改变原数组
a = np.arange(24).reshape((2,3,4))#把原数组变为2层3行4列的数组
print(a)
print(a[0,:,:])#取得第一层的所有数据,也可以直接用a[0]


#flatten,ravel展平操作,变为一维数组
b = a.ravel()#
print(b)
c = a.flatten()
print(c)

#使用元组设置,和reshape功能相同
c.shape = (2,3,4)
print(c)

#T属性和transpose转置
a = np.arange(12)
b = a.reshape((2,6))
c = b.transpose()
print(c)
print(b.T)

输出结果如下:

[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
[[ 0  6]
 [ 1  7]
 [ 2  8]
 [ 3  9]
 [ 4 10]
 [ 5 11]]
[[ 0  6]
 [ 1  7]
 [ 2  8]
 [ 3  9]
 [ 4 10]
 [ 5 11]]

加法和乘法

#数组组合,加法和乘法
a = np.arange(9).reshape((3,3))
b = a * 2 #数组中的每一项都乘以2
print(b)
c = a + b #对应位置相加
print(c)

输出结果如下:

[[ 0  2  4]
 [ 6  8 10]
 [12 14 16]]
[[ 0  3  6]
 [ 9 12 15]
 [18 21 24]]

组合

把多个数组组合成为一个数组

import numpy as np

#数组组合
a = np.arange(9).reshape((3,3))
b = a * 2 #数组中的每一项都乘以2

#水平组合
c = np.hstack((a,b))
print(c)

#垂直组合
c = np.vstack((a,b))
print(c)

#深度组合
c = np.dstack((a,b))
print(c)

#列组合,对于二维数组相当于水平组合
c = np.column_stack((a,b))
print(c)

#行组合,对于二维数组相当于垂直组合
c = np.row_stack((a,b))
print(c)

输出结果:

[[ 0  1  2  0  2  4]
 [ 3  4  5  6  8 10]
 [ 6  7  8 12 14 16]]
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 0  2  4]
 [ 6  8 10]
 [12 14 16]]
[[[ 0  0]
  [ 1  2]
  [ 2  4]]

 [[ 3  6]
  [ 4  8]
  [ 5 10]]

 [[ 6 12]
  [ 7 14]
  [ 8 16]]]
[[ 0  1  2  0  2  4]
 [ 3  4  5  6  8 10]
 [ 6  7  8 12 14 16]]
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 0  2  4]
 [ 6  8 10]
 [12 14 16]]

分割

把一个数组分割成为多个数组。

import numpy as np

#数组分割
a = np.arange(9).reshape((3,3))
b = a * 2 #数组中的每一项都乘以2

#水平分割
b = np.hsplit(a,3)
print(b)


#垂直分割
b = np.vsplit(a,3)
print(b)

#深度分割,只能用于3维数组
a = np.arange(27).reshape(3, 3, 3)
b = np.dsplit(a,3)
print(b)

输出结果如下:

[array([[0],
       [3],
       [6]]), array([[1],
       [4],
       [7]]), array([[2],
       [5],
       [8]])]
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
[array([[[ 0],
        [ 3],
        [ 6]],

       [[ 9],
        [12],
        [15]],

       [[18],
        [21],
        [24]]]), array([[[ 1],
        [ 4],
        [ 7]],

       [[10],
        [13],
        [16]],

       [[19],
        [22],
        [25]]]), array([[[ 2],
        [ 5],
        [ 8]],

       [[11],
        [14],
        [17]],

       [[20],
        [23],
        [26]]])]

猜你喜欢

转载自blog.csdn.net/maosijunzi/article/details/79528710