Numpy 101:Python的数据科学初学者指南
#初学者 #python #datascience #100daysofdatascience

100天的第4天数据科学训练营从NOOB到专家。

github链接:Complete-Data-Science-Bootcamp

主要帖子:Complete-Data-Science-Bootcamp

回顾第3天

昨天我们已经详细研究了有关python的OOP。

开始吧

numpy是Python中的一个库,可在数组上提供快速有效的数值操作。它被广泛用于数据科学和机器学习,以在大型数据集上执行数学操作。

python列表vs numpy阵列

numpy阵列类似于python列表,但是它们更有效,可以更快地执行操作。 Numpy阵列是同质的,这意味着它们只能包含相同数据类型的元素,而Python列表可以包含不同数据类型的元素。 Numpy阵列也具有固定的大小,而Python列表则没有。

创建一个numpy阵列

有几种创建一个numpy数组的方法:

  • 基本ndarray:要创建一个基本的numpy数组,我们可以使用numpy.Array函数。例如:
import numpy as np

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

[1 2 3 4]

  • 零的数组:为了创建一个零数组,我们可以使用numpy瑞士函数。例如:
a = np.zeros(5)
print(a)

[0。 0. 0. 0. 0。]

  • 一系列:要创建一个数组,我们可以使用numpy.ones函数。例如:
a = np.ones(5)
print(a)

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

  • ndarray中的随机数:要创建一个随机数数组,我们可以使用numpy.random.rand函数。例如:
a = np.random.rand(5)
print(a)

[0.34150314 0.25977794 0.18726775 0.00209527 0.08221211]

  • 您选择的数组:要创建具有特定值的数组,我们可以使用numpy.arange函数。例如:
a = np.arange(1, 11)
print(a)

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

  • numpy中的矩阵:要创建一个2D数组(矩阵),我们可以使用numpy.matrix函数。例如:
a = np.matrix([[1, 2, 3], [4, 5, 6]])
print(a)

[[1 2 3] [4 5 6]

  • 均匀间隔的ndarray:要创建一个具有均匀间隔值的数组,我们可以使用numpy.linspace函数。例如:
a = np.linspace(1, 10, 5)
print(a)

[1. 3.25 5.5 7.75 10.]

numpy阵列的形状和重塑

  • numpy数组的尺寸:要获取numpy数组的尺寸,我们可以使用ndarray.ndim属性。例如:
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.ndim)

2

  • numpy数组的形状:要获得numpy数组的形状,我们可以使用ndarray.shape属性。例如:
print(a.shape)

(2,3)

  • numpy数组的大小:要获取numpy数组中的元素总数,我们可以使用ndarray.size属性。例如:
print(a.size)

6

  • 重塑一个numpy数组:为了重塑一个numpy数组,我们可以使用ndarray.reshape函数。例如:
a = np.array([1, 2, 3, 4, 5, 6])
b = a.reshape(2, 3)
print(b)

[[1 2 3] [4 5 6]

  • 扁平的数组:要使一个numpy阵列变平,我们可以使用ndarray.flatten函数。例如:
a = np.array([[1, 2, 3], [4, 5, 6]])
b = a.flatten()
print(b)

[1 2 3 4 5 6]

  • numpy数组的转置:要获取numpy阵列的转置,我们可以使用ndarray.transpose函数。例如:
a = np.array([[1, 2, 3], [4, 5, 6]])
b = a.transpose()
print(b)

[[1 4] [2 5] [3 6]

扩展和挤压一个数组

  • 为了展开numpy数组,我们可以使用numpy.expand_dims函数。例如:
a = np.array([1, 2, 3])
b = np.expand_dims(a, axis=1)
print(b)

[[1] [2] [3]]

  • 要挤压一个numpy阵列,我们可以使用numpy.squeeze函数。例如:
a = np.array([[1], [2], [3]])
b = np.squeeze(a)
print(b)

[1 2 3]

Numpy阵列的索引和切片

  • 切片1-D Numpy数组:要切片一个1-D Numpy数组,我们可以使用ndarray[start:end:step]符号。例如:
a = np.array([1, 2, 3, 4, 5, 6])
b = a[1:4]
print(b)

[2 3 4]

  • 切片2-d numpy数组:要切片一个2-D numpy阵列,我们可以使用ndarray[row_start:row_end:row_step, col_start:col_end:col_step]表示法。例如:
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = a[0:2, 1:3]
print(b)

[[2 3] [5 6]

  • 切片3-D Numpy数组:要切片一个3-D Numpy阵列,我们可以使用ndarray[dim1_start:dim1_end:dim1_step, dim2_start:dim2_end:dim2_step, dim3_start:dim3_end:dim3_step]符号。例如:
a = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
b = a[0:2, 0:2, 0:2]
print(b)

[[[1 2] [4 5]]

[[7 8] [10 11]]

  • numpy阵列的负面切片:要切片带有负索引的numpy阵列,我们可以使用ndarray[-end:-start:-step]符号。例如:
a = np.array([1, 2, 3, 4, 5, 6])
b = a[-4:-1]
print(b)

[3 4 5]

堆叠和串联numpy阵列

  • 堆叠ndarrays:要垂直或水平堆叠numpy数组,我们可以使用numpy.vstacknumpy.hstack函数。例如:
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.vstack((a, b))
d = np.hstack((a, b))
print(c)
print(d)

[[1 2 3] [4 5 6]] [1 2 3 4 5 6]

  • 串联ndarrays:为了沿特定轴连接numpy阵列,我们可以使用numpy.concatenate函数。例如:
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.concatenate((a, b), axis=1)
print(c)

[[1 2 5 6] [3 4 7 8]]

在Numpy阵列中广播

广播是Numpy中的一个强大功能,它使我们能够在不同形状的阵列上执行算术操作。 Numpy自动广播较小的数组以匹配较大数组的形状以执行操作。

例如:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c)

[5 7 9]

numpy ufuncs

numpy提供了广泛的通用函数(UFUNCS),可以应用于阵列以执行数学操作。一些常见的ufuncs包括:

  • np.add:添加两个数组元素

  • np.subtract:减去两个阵列元素

  • np.multiply:乘以两个阵列元素

  • np.divide:除以两个数组元素

  • np.abs:计算数组的绝对值

  • np.sin:计算数组的正弦

  • np.cos:计算数组的余弦

  • np.exp:计算数组的指数

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.add(a, b)
d = np.subtract(a, b)
e = np.multiply(a, b)
f = np.divide(a, b)
g = np.abs(a)
h = np.sin(a)
i = np.cos(a)
j = np.exp(a)
print(c)
print(d)
print(e)
print(f)
print(g)
print(h)
print(i)
print(j)

[5 7 9] [-3 -3 -3] [4 10 18] [0.25 0.4 0.4 0.4 0.5] [1 2 3] [0.84147098 0.90929743 0.14112001] [0.54030231 -0.41614684 -0.989999925] [2.799925] [2.799925] [2.799925] [2.7899925] [2.789925] [2.7182] [2.7182] p>

带有numpy阵列的数学

numpy提供了许多功能,可以在数组上执行数学操作。一些常见功能包括:

  • np.mean:计算数组的平均值

  • np.median:计算数组的中位数

  • np.std:计算数组的标准偏差

  • np.min:计算数组的最小值

  • np.max:计算数组的最大值

  • np.argmin:计算数组的最小值的索引

  • np.argmax:计算数组的最大值的索引

  • np.sort:按升序排列数个数组

a = np.array([1, 2, 3, 4, 5])
mean = np.mean(a)
median = np.median(a)
std = np.std(a)
min_val = np.min(a)
max_val = np.max(a)
min_index = np.argmin(a)
max_index = np.argmax(a)
sorted_a = np.sort(a)
print(mean)
print(median)
print(std)
print(min_val)
print(max_val)
print(min_index)
print(max_index)
print(sorted_a)

3.0 3.0 1.4142135623730951 1 5 0 4 [1 2 3 4 5]

numpy阵列和图像

numpy阵列可用于表示图像。要将图像读取到numpy数组中,我们可以使用scipy.misc.imread函数。要将numpy数组作为图像写,我们可以使用scipy.misc.imsave函数。

import numpy as np
import imageio

# Read image into NumPy array
img = imageio.imread('image.jpeg')

# Perform some operations on the image
img = img * 2

# Save the modified image
imageio.imsave('modified_image.jpeg', img)

要使用matplotlib显示图像,您可以使用与以前相同的代码:

import numpy as np
import matplotlib.pyplot as plt

# Read image into NumPy array
img = imageio.imread('image.jpeg')

# Display image
plt.imshow(img)
plt.show()

Image description

图像之后

# Read image into NumPy array
img = imageio.imread('modified_image.jpeg')

# Display image
plt.imshow(img)
plt.show()

Image description

您将在Github的第4天的练习笔记本中找到练习问题。

如果您喜欢它,然后...

Buy Me A Coffee