Python中的Numpy

Python中的Numpy是什么?

Numpy是一个数组处理程序包,它提供高性能的多维数组对象和实用程序来处理数组。它是使用python进行科学计算的基本软件包。它是一个线性代数库,对于使用python进行数据科学非常重要,因为pyData生态系统中的几乎所有库都依赖Numpy作为其主要构建模块之一。它非常快,因为它与C绑定。

numpy提供的许多功能中的一些功能一如既往,

  1. N维数组对象

  2. 广播功能

  3. 与C / C ++集成的实用程序

  4. 有用的线性代数和随机数功能

安装Numpy

1)使用点子

    pip install numpy

安装输出

pip install numpy
Collecting numpy
  Downloading https://files.pythonhosted.org/packages/60/9a/a6b3168f2194fb468dcc4cf54c8344d1f514935006c3347ede198e968cb0/numpy-1.17.4-cp37-cp37m-macosx_10_9_x86_64.whl (15.1MB)
    100% |████████████████████████████████| 15.1MB 1.3MB/s 
Installing collected packages: numpy
Successfully installed numpy-1.17.4

2)使用水蟒

    conda install numpy

numpy中的数组

Numpy的主要对象是齐次多维数组。numpy数组有两种类型:向量和矩阵向量严格是一维数组,矩阵是二维。

在Numpy中,尺寸称为轴。轴数为等级。以下示例列出了ndarray对象的最重要属性。

示例

# 进口包装
import numpy as np

# 创建数组
arr = np.array([[11,12,13],[14,15,16]])

print("Array is of type {}".format(type(arr)))
print("No. of dimensions {}".format(arr.ndim))
print("shape of array:{}".format(arr.shape))
print("size of array:{}".format(arr.size))
print("type of elements in the array:{}".format(arr.dtype))

输出结果

Array is of type <class 'numpy.ndarray'>
No. of dimensions 2
shape of array:(2, 3)
size of array:6
type of elements in the array:int64

创建一个numpy数组

创建numpy数组的方式有多种。例如,可以使用将列表或元组强制转换为numpy数组。array()方法(如以上示例中所述)。数组将序列的序列转换为2维数组,将序列的序列转换为3维数组,依此类推。

为了创建数字序列,NumPy提供了一个称为arange的函数,该函数返回数组而不是列表。

语法:

    # 返回给定间隔内的均匀间隔的值。 
    arange([start,] stop [,step], dtype=None)

示例

x = np.arange(10,30,5)
print(x)
# 输出:[10 15 20 25]

函数零创建一个由零组成的数组,函数一个创建一个由零组成的数组,函数空创建一个数组,其初始内容是随机的,并取决于内存的状态。默认情况下,创建的数组的dtype为float64。

示例

# 进口包装
import numpy as np

x = np.zeros((3,4))
print("np.zeros((3,4))...")
print(x)

x = np.ones((3,4))
print("np.ones((3,4))...")
print(x)

x = np.empty((3,4))
print("np.empty((3,4))...")
print(x)

x = np.empty((1,4))
print("np.empty((1,4))...")
print(x)

输出结果

np.zeros((3,4))...
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
np.ones((3,4))...
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
np.empty((3,4))...
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
np.empty((1,4))...
[[1.63892563e-316 0.00000000e+000 2.11026305e-312 2.56761491e-312]]

numpy函数

NumPy提供了一些更多的函数来创建数组,

1) linspace()

它在指定的间隔内返回均匀间隔的数字。

语法:

    linspace(start, stop, num=50, endpoint=True, restep=False, dtype=None)

示例

# 进口包装
import numpy as np

x = np.linspace(1,3,num=10)
print(x)

输出结果

[1.         1.22222222 1.44444444 1.66666667 1.88888889 2.11111111
 2.33333333 2.55555556 2.77777778 3.        ]

2) eye()

它返回一个二维数组,对角线上有一个,其他位置为零。

语法:

    eye(N, M=None, k=0, dtype=<class 'float'>, order='C')

示例

# 进口包装
import numpy as np

x = np.eye(4)
print(x)

输出结果

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

3) random()

它创建一个带有随机数的数组

示例

# 进口包装
import numpy as np

x = np.random.rand(5)
print("np.random.rand(5)...")
print(x)

x = np.random.rand(5,1)
print("np.random.rand(5,1)...")
print(x)

x = np.random.rand(5,1,3)
print("np.random.rand(5,1,3)...")
print(x)

# 返回一个随机数
x = np.random.randn() 
print("np.random.randn()...")
print(x)

# 返回带有随机数的二维数组
x = np.random.randn(2,3) 
print("np.random.randn(2,3)...")
print(x)

x = np.random.randint(3)
print("np.random.randint(3)...")
print(x)

# 返回一个随机数 in between low and high
x = np.random.randint(3,100) 
print("np.random.randint(3,100)...")
print(x)

# 返回长度为34的随机数数组
x = np.random.randint(3,100,34)
print("np.random.randint(3,100,34)...")
print(x)

输出结果

np.random.rand(5)...[0.87417146 0.77399086 0.40012698 0.37192848 0.98260636]
np.random.rand(5,1)...
[[0.712829  ]
 [0.65959462]
 [0.41553044]
 [0.30583293]
 [0.83997539]]
np.random.rand(5,1,3)...
[[[0.75920149 0.54824968 0.0547891 ]]

 [[0.70911911 0.16475541 0.5350475 ]]

 [[0.74052103 0.4782701  0.2682752 ]]
 [[0.76906319 0.02881364 0.83366651]]

 [[0.79607073 0.91568043 0.7238144 ]]]
np.random.randn()...
-0.6793254693909823
np.random.randn(2,3)...
[[ 0.66683143  0.44936287 -0.41531392]
 [ 1.86320357  0.76638331 -1.92146833]]
np.random.randint(3)...
1
np.random.randint(3,100)...
53
np.random.randint(3,100,34)...
[43 92 76 39 78 83 89 87 96 59 32 74 31 77 56 53 18 45 78 21 46 10 25 86
 64 29 49  4 18 19 90 17 62 29]

4)整形方法(形状处理)

数组的形状由沿每个轴的元素数确定,

# 进口包装
import numpy as np

x = np.floor(10*np.random.random((3,4)))
print(x)

print(x.shape)

输出结果

[[0. 2. 9. 4.] 
 [0. 4. 1. 7.]
 [9. 7. 6. 2.]]
(3, 4)

数组的形状可以通过各种命令进行更改。但是,shape命令返回所有修改后的数组,但不更改原始数组。

# 进口包装
import numpy as np

x = np.floor(10*np.random.random((3,4)))
print(x)

# 返回数组,展平
print("x.ravel()...")
print(x.ravel()) 

# 返回形状已修改的数组
print("x.reshape(6,2)...")
print(x.reshape(6,2)) 

# 返回数组,转置
print("x.T...")
print(x.T) 

print("x.T.shape...")
print(x.T.shape)

print("x.shape...")
print(x.shape)

输出结果

[[3. 1. 0. 6.] [3. 1. 2. 4.]
 [7. 0. 0. 1.]]
x.ravel()...
[3. 1. 0. 6. 3. 1. 2. 4. 7. 0. 0. 1.]
x.reshape(6,2)...
[[3. 1.]
 [0. 6.]
 [3. 1.]
 [2. 4.]
 [7. 0.]
 [0. 1.]]
x.T...
[[3. 3. 7.] [1. 1. 0.]
 [0. 2. 0.]
 [6. 4. 1.]]
x.T.shape...
(4, 3)
x.shape...
(3, 4)

其他方法

# 进口包装
import numpy as np

x = np.floor(10*np.random.random((3,4)))
print(x)

#返回数组中的最大值
print("x.max():", x.max())

# 返回数组中的最小值
print("x.min():", x.min())

# 返回数组中最大值的索引
print("x.argmax():", x.argmax())

# 返回数组中最小值的索引
print("x.argmin():", x.argmin())

输出结果

[[4. 0. 5. 2.] [8. 5. 9. 7.]
 [9. 3. 5. 5.]]
x.max(): 9.0
x.min(): 0.0
x.argmax(): 6
x.argmin(): 1