📜  Numpy 创建数组

📅  最后修改于: 2020-04-18 09:15:32             🧑  作者: Mango

使用List创建数组数组用于将多个值存储在一个变量中.Python不具有对数组的内置支持,但可以使用Python列表代替。
范例:

arr = [1, 2, 3, 4, 5]
arr1 = ["芒果", "for", "芒果"]
# Python程序创建一个数组
# 使用列表创建数组
    arr=[1, 2, 3, 4, 5]
    for i in arr:
        print(i)

输出:

1
2
3
4
5

使用数组函数创建数组:
array(data type,value list)函数用于创建一个数组,该数组的参数中指定了数据类型和值列表。
范例:

# Python代码演示array()的工作原理
# 导入“array"以进行数组操作
import array
# 用数组值初始化数组
# 用有符号整数初始化数组
arr = array.array('i', [1, 2, 3])
# 打印原始阵列
print ("新创建的数组是 : ",end="")
for i in range (0,3):
    print (arr[i], end=" ")
print ("\r")

输出:

The new created array is : 1 2 3 1 5

使用numpy方法
创建数组 NumPy提供了几个函数来创建具有初始占位符内容的数组。这些将增长数组的必要性降至最低,因为改变数组的形状是一项昂贵的操作。例如:np.zerosnp.empty等。
numpy.empty(shape,dtype = float,order =’C’):返回具有给定形状和类型且具有随机值的新数组。

# Python编程说明numpy.empty方法
import numpy as np
b = np.empty(2, dtype = int)
print("矩阵 b : \n", b)
a = np.empty([2, 2], dtype = int)
print("\n矩阵 a : \n", a)
c = np.empty([3, 3])
print("\n矩阵 c : \n", c)

输出:

矩阵 b :
 [         0 1079574528]
矩阵 a :
 [[0 0]
 [0 0]]
矩阵 a :
 [[ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]

numpy.zeros(shape,dtype = None,order =’C’):返回一个给定形状和类型的新数组,元素值全部是零。

# Python程序说明numpy.zeros方法
import numpy as np
b = np.zeros(2, dtype = int)
print("矩阵 b : \n", b)
a = np.zeros([2, 2], dtype = int)
print("\n矩阵 a : \n", a)
c = np.zeros([3, 3])
print("\n矩阵 c : \n", c)

输出:

矩阵 b :
 [0 0]
矩阵 a :
 [[0 0]
 [0 0]]
矩阵 c :
 [[ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]

reshape数组:我们可以使用reshape方法重塑数组。考虑一个形状为(a1,a2,a3,…,aN)的数组。我们可以重塑形状并将其转换为形状为(b1,b2,b3,…,bM)的另一个数组。
唯一需要的条件是:a1 x a2 x a3…x aN = b1 x b2 x b3…x bM。(即数组的原始大小保持不变。)
numpy.reshape(array,shape,order =’C’):在不更改数组数据的情况下对数组进行reshape。

# Python程序说明numpy.reshape()方法
import numpy as np
array = np.arange(8)
print("原始数组 : \n", array)
# 2行4列的形状数组
array = np.arange(8).reshape(2, 4)
print("\n重新排列为2行4列的数组 : \n", array)
# 2行4列的形状数组
array = np.arange(8).reshape(4 ,2)
print("\n重新排列为2行4列的数组 : \n", array)
# 构造3D数组
array = np.arange(8).reshape(2, 2, 2)
print("\n将原始阵列重塑为3D : \n", array)

输出:

原始数组 :
 [0 1 2 3 4 5 6 7]
重新排列为2行4列的数组 :
 [[0 1 2 3]
 [4 5 6 7]]
重新排列为2行4列的数组 :
 [[0 1]
 [2 3]
 [4 5]
 [6 7]]
将原始阵列重塑为3D:
 [[[0 1]
  [2 3]]
 [[4 5]
  [6 7]]]

为了创建数字序列,NumPy提供了类似于range的函数,该函数返回数组而不是列表。
arange 给定间隔内返回均匀间隔的值
linspace 返回给定间隔内的均匀间隔的值。
arange([start,] stop [,step,] [,dtype]):返回一个数组,该数组具有按间隔均匀分布的元素。提到的间隔是打开的一半,即[开始,停止]

# Python编程说明numpy.arange方法
import numpy as np
print("A\n", np.arange(4).reshape(2, 2), "\n")
print("A\n", np.arange(4, 10), "\n")
print("A\n", np.arange(4, 20, 3), "\n")

输出:

A
 [[0 1]
 [2 3]]
A
 [4 5 6 7 8 9]
A
 [ 4  7 10 13 16 19]

numpy.linspace(start,stop,num = 50,endpoint = True,retstep = False,dtype = None):返回间隔均匀的数字空间。

# Python编程说明numpy.linspace方法
import numpy as np
# 重新设置为True
print("B\n", np.linspace(2.0, 3.0, num=5, retstep=True), "\n")
# To evaluate sin() in long range
x = np.linspace(0, 2, 10)
print("A\n", np.sin(x))

输出:

B
 (array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)
A
 [ 0.          0.22039774  0.42995636  0.6183698   0.77637192  0.8961922
  0.9719379   0.99988386  0.9786557   0.90929743]

展平flatten数组:我们可以使用展平方法flatten将数组副本折叠成仅有一个维度的新数组。它接受顺序参数。默认值为“ C”(对于行优先)。使用“ F”表示主要顺序。
numpy.ndarray.flatten(order =’C’):返回折叠成一维的数组副本。

# Python程序说明numpy.flatten()方法
import numpy as 芒果
array = 芒果.array([[1, 2], [3, 4]])
# 使用扁平化方法
array.flatten()
print(array)
#using fatten method
array.flatten('F')
print(array)

输出:

[1、2、3、4]
[1、3、2、4]

在Numpy中创建数组的方法

函数 描述
empty() 返回给定形状和类型的新数组,而无需初始化条目
empty_like() 返回形状和类型与给定数组相同的新数组
eye() 返回一个二维数组,对角线上有一个,其他位置为零。
identity() 返回标识数组
ones() 返回给定形状和类型的新数组,并填充其中的一个
ones_like() 返回与给定数组具有相同形状和类型的数组
zeros() 返回给定形状和类型的新数组,并填充零
zeros_like() 返回形状与类型与给定数组相同的零数组
full_like() 返回形状和类型与给定数组相同的完整数组。
array() 创建一个数组
asarray() 将输入转换为数组
asanyarray() 将输入转换为ndarray,但将ndarray子类传递给
ascontiguousarray() 返回内存中的连续数组(C顺序)
asmatrix() 将输入解释为矩阵
copy() 返回给定对象的数组副本
frombuffer() 将缓冲区解释为一维数组
fromfile() 根据文本或二进制文件中的数据构造数组
fromfunction() 通过在每个坐标上执行一个函数来构造一个数组
fromiter() 从可迭代对象创建新的一维数组
fromstring() 从字符串中的文本数据初始化的新一维数组
loadtxt() 从文本文件加载数据
arange() 返回给定间隔内的均匀间隔的值
linspace() 返回指定间隔内的等间隔数字
logspace() 返回数字以对数刻度均匀分布
geomspace() 返回数字在对数刻度上均匀间隔(几何级数)
meshgrid() 从坐标向量返回坐标矩阵
mgrid() nd_grid实例,它返回一个密集的多维“ meshgrid”
ogrid() nd_grid实例,它返回一个开放的多维“ meshgrid”
diag() 提取对角线或构造对角线数组
diagflat() 使用展平的输入作为对角线创建二维数组
tri() 在给定对角线处及以下且在其他位置为零的数组
tril() 数组的下三角
triu() 数组的上三角
vander() 生成范德蒙德矩阵
mat() 将输入解释为矩阵
bmat() 根据字符串,嵌套序列或数组构建矩阵对象