Python数据分析NumPy和pandas(三、NumPy学习记录1)

创建numpy的ndarrays数组

创建数组的最简单方法是使用 array 函数。这接受任何类似序列的对象(包括其他数组)并生成一个包含传递数据的新 NumPy 数组。例如,列表是很好的转换候选对象:

一种最简单的数组创建方式是使用array函数,这个函数接受任何类似序列的对象参数来创建numpy数组,包括接受numpy数组本身作为参数来创建新的数组,这个新的数组接受参数传递过来的数据作为新的数组中的元素。下面举例说明。用python的列表list作为参数来创建数组,如下:

import numpy as np
#新建一个python的list列表
data1 = [6, 7, 8, 9, 0]

#用array函数接受data1作为参数创建数组
arr1 = np.array(data1)

print(arr1)

控制台输出:[6 7 8 9 0]

如果用嵌套的等长列表作为array函数参数来创建数组,那么这个嵌套且内部列表等长的列表将被转换为多维数组,下面创建一个2维数组:

import numpy as np

#python 内置的嵌套列表list,其中每个元素长度为4
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]

#用嵌套列表创建一个二维数组
arr2 = np.array(data2)

print(arr2)

控制台打印输出结果:

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

看输出结果是一个2行4列的数组。

可以用数组的ndim属性来查看这个arr2数组是几维的。arr2.ndim   输出2 表示2维数组。

可以用数组的shape属性来看下这个arr2数组的形状。arr2.shape 输出一个python元组(2,4),表示是一个2行4列的二维数组。

除了 numpy.array 之外,还有许多其他函数可用于创建新数组。例如,numpy.zeros 和 numpy.ones 分别创建具有给定长度或形状的 0 或 1 数组。numpy.empty 也可以用于创建一个数组,而不将其值初始化为任何特定值。如果要使用这些方法创建更高维度的数组,可以传递一个元组参数,如下举例:

import numpy as np

#用zeros函数创建长度为10,每个元素值为0. 的一维数组
z_arr = np.zeros(10)
print(z_arr)

#用zeros函数接收一个元组(3,6)作为参数,创建每个元素值为0. 的3行6列的二维数组
z_arr2 = np.zeros((3, 6))
print(z_arr2)

#用empty函数接收一个元组(2,3,2)作为参数,创建每个元素不赋值的三位数组
z_arr3 = np.empty((2, 3, 2))
print(z_arr3)

输出结果:

[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]

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

[[[6.23042070e-307 4.22795269e-307]
  [1.69121367e-306 1.78022342e-306]
  [1.05700345e-307 3.11525958e-307]]

 [[1.11259940e-306 1.60220393e-306]
  [8.01097889e-307 1.11260144e-306]
  [6.89812281e-307 2.22522596e-306]]]

从输出结果可以看出1.如果未在zeros函数中指定生成的数组元素的值类型,默认为float类型。2.使用empty函数生成数组时,此函数返回未初始化的内存,因此可能包含非零的 “垃圾” 值,所以我们仅当打算用数据填充新数组时,才应使用此函数,一般情况下不使用此函数生成占位空数组等。

注意:由于 NumPy 专注于数值计算,因此数据类型(如果未指定)在许多情况下将是 float64(浮点)。

以下表格是一些常用的重要的数组创建函数和说明

函数说明
array

将传入的数据(list、tuple、array或者其他序列类型的数据)转化为ndarray,默认情况下,生成的数组的数据类型为传入的数据类型,或者显示指定数据类型np.array([1, 2, 3], dtype=np.float64),array会复制传入的数据

asarray将输入的序列类的数据转换为 ndarray,但如果输入的序列已经是 ndarray,则不会复制,相当于引用原来的ndarray
arange与内置的python范围range类似,但返回 ndarray 而不是列表。例如np.arrange(5),返回[0 1 2 3 4]
ones, ones_like

生成一个具有给定形状和数据类型的全1的数组;ones_like 采用另一个数组并生成具有相同形状和数据类型的全1的数组,例如:

array1 = np.array([[2.1,2.2,2.3,2.4],[1.1,1.2,1.3,1.4]])

array2 = np.ones_like(array1)

则array2输出:[[1. 1. 1. 1.]
 [1. 1. 1. 1.]]

zeros, zeros_like与ones,ones_like函数类似,不过生成的是全0数组
empty, empty_like通过分配新内存来创建新数组,但不填充任何值,类似于ones,ones_like和zeros,zeros_like函数
full, full_like

生成给定形状和数据类型的数组,所有值都设置为指示的 “fill value”;full_like 采用另一个数组并生成具有相同形状和数据类型的填充数组。例如:

np.full((2,3), 1)

输出:[[1 1 1]
 [1 1 1]]

numpy.full(shape, fill_value, dtype=None, order='C')

eye, identity

创建一个正方形 N × N 单位矩阵(对角线上为 1,其他位置为 0)。例如

np.eye(5) 输出:

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

np.identity(6)输出:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值