利用Python进行数据分析笔记-第4章 NumPy基础:数组和⽮量计算-4.1 NumPy的ndarray:⼀种多维数组对象
#!/usr/bin/env python
# coding: utf-8
# # 第4章 NumPy基础:数组和⽮量计算
#
# # 4.1 NumPy的ndarray:⼀种多维数组对象
import numpy as np
data = np.random.randn(2, 3)
data
# In[2]:
data * 10
# In[3]:
data + data
# In[ ]:
# ndarray是⼀个通⽤的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的。
# 每个数组都有⼀个shape(⼀个表示各维度⼤⼩的元组)
# 和⼀个dtype(⼀个⽤于说明数组数据类型的对象):
# In[5]:
data.shape
# In[6]:
data.dtype
# In[ ]:
# 虽然⼤多数数据分析⼯作不需要深⼊理解NumPy,但是精通⾯向数组的编程和思维⽅式是成为Python科学计算⽜⼈的⼀⼤关键步骤。
# 笔记:当你在本书中看到“数组”、“NumPy数组”、"ndarray"时,基本上都指的是同⼀样东⻄,即ndarray对象。
# In[13]:
# Python中random和np.random模块详解 https://zhuanlan.zhihu.com/p/474425448
# 创建整数类型数组 1到100 之间,2行3列数组
data2 = np.random.randint(1,100,size=(2,3))
data2
# In[14]:
# 创建数组最简单的办法就是使⽤array函数。它接受⼀切序列型的对象(包括其他数组),
# 然后产⽣⼀个新的含有传⼊数据的NumPy数组。以⼀个列表的转换为例:
list1 = [1,2,3,4,]
arr1 = np.array(list1)
arr1
# In[15]:
type(arr1)
# In[16]:
arr1.shape
# In[19]:
arr1.dtype
# In[22]:
# 除np.array之外,还有⼀些函数也可以新建数组。
# ⽐如,zeros和ones分别可以创建指定⻓度或形状的全0或全1数组。
# empty可以创建⼀个没有任何具体值的数组。
# 要⽤这些⽅法创建多维数组,只需传⼊⼀个表示形状的元组即可:
np.zeros(3)
# In[23]:
np.zeros((3, 6))
# In[26]:
# 注意:认为np.empty会返回全0数组的想法是不安全的。
# 很多情况下(如前所示),它返回的都是⼀些未初始化的垃圾值。
np.empty((2, 3))
# In[27]:
# arange是Python内置函数range的数组版:
np.arange(15)
# In[29]:
# 10 NumPy数组的运算
# 1数组很重要,因为它使你不⽤编写循环即可对数据执⾏批量运算。NumPy⽤户称其为⽮量化(vectorization)。
# ⼤⼩相等的数组之间的任何算术运算都会将运算应⽤到元素级:
arr = np.array([[1,2,3],[4,5,6]])
arr
# In[30]:
arr * arr
# In[31]:
arr - arr
# In[32]:
# 数组与标量的算术运算会将标量值传播到各个元素:
1 / arr
# In[34]:
# ⼤⼩相同的数组之间的⽐较会⽣成布尔值数组:
arr2 = np.array([[0., 4., 1.], [7., 2., 12.]])
arr2 > arr
# In[36]:
# 11 基本的索引和切⽚
# NumPy数组的索引是⼀个内容丰富的主题,因为选取数据⼦集或单个元素的⽅式有很多。
# ⼀维数组很简单。从表⾯上看,它们跟Python列表的功能差不多:
arr = np.arange(10)
arr
# In[37]:
arr[1]
# In[40]:
arr[0:2]
# In[39]:
arr[5:8]
# In[41]:
arr
# In[ ]:
# 如上所示,当你将⼀个标量值赋值给⼀个切⽚时(如arr[5:8]=12),
# 该值会⾃动传播(也就说后⾯将会讲到的“⼴播”)到整个选区。
# 跟列表最重要的区别在于,数组切⽚是原始数组的视图。
# 这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上。
# 补充2 在 NumPy 中,array 是一个多维数组对象,用于存储相同类型的数据。
# 创建ndarray
# 创建数组最简单的办法就是使⽤array函数。它接受⼀切序列型的对象(包括其他数组),
# 然后产⽣⼀个新的含有传⼊数据的NumPy数组。以⼀个列表的转换为例:
import numpy as np
# 创建一个一维数组
arr_1d = np.array([1, 2, 3])
print(arr_1d)
data1 = [6,7.5,8,0,1]
arr1 = np.array(data1)
print(data1)
# 创建一个二维数组
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
arr_2d.ndim # 查看维度
arr_2d.shape # 查看几行几列
arr_2d.dtype # 查看数据类型
浙公网安备 33010602011771号