您的位置 首页 编程知识

python numpy如何创建一个数组_Numpy创建数组的多种方式

NumPy提供多种创建数组的方法:np.array()从列表转换数组,支持多维及类型自动转换;np.zeros…


NumPy提供多种创建数组的方法:np.array()从列表转换数组,支持多维及类型自动转换;np.zeros()、np.ones()、np.full()分别创建全0、全1或指定值的数组;np.arange()按步长生成等差序列,np.linspace()按数量生成等间隔数;np.random.rand()、randint()、normal()生成不同分布的随机数组;可通过dtype参数指定数据类型以优化内存;reshape()可改变数组形状并支持-1自动推断维度;concatenate()、stack()、hstack()、vstack()实现沿轴或新维度的数组合并。

python numpy如何创建一个数组_Numpy创建数组的多种方式

Numpy创建数组的方法很多,最常用的是

np.array()
登录后复制
登录后复制
登录后复制
登录后复制

,但还有其他更灵活高效的方式,比如

np.zeros()
登录后复制
登录后复制
登录后复制
登录后复制

np.ones()
登录后复制
登录后复制
登录后复制

np.arange()
登录后复制
登录后复制
登录后复制
登录后复制

等等。选择哪种方式取决于你的具体需求。

np.array()创建数组、np.zeros()、np.ones()、np.arange()、np.linspace()、np.random.rand()

如何使用

np.array()
登录后复制
登录后复制
登录后复制
登录后复制

从Python列表创建NumPy数组?

np.array()
登录后复制
登录后复制
登录后复制
登录后复制

是最基础的创建数组的方法。它接受一个Python列表或元组作为输入,并尝试将其转换为NumPy数组。

import numpy as np  my_list = [1, 2, 3, 4, 5] my_array = np.array(my_list) print(my_array) # 输出: [1 2 3 4 5] print(type(my_array)) # 输出: <class 'numpy.ndarray'>
登录后复制

如果列表中的元素类型不一致,NumPy会尝试自动进行类型转换。比如,如果列表中同时包含整数和浮点数,那么所有元素都会被转换为浮点数。

立即学习“”;

mixed_list = [1, 2.5, 3] mixed_array = np.array(mixed_list) print(mixed_array) # 输出: [1.  2.5 3. ] print(mixed_array.dtype) # 输出: float64
登录后复制
np.array()
登录后复制
登录后复制
登录后复制
登录后复制

还可以创建多维数组:

matrix = [[1, 2, 3], [4, 5, 6]] matrix_array = np.array(matrix) print(matrix_array) # 输出: # [[1 2 3] #  [4 5 6]] print(matrix_array.shape) # 输出: (2, 3)
登录后复制

np.zeros()
登录后复制
登录后复制
登录后复制
登录后复制

np.ones()
登录后复制
登录后复制
登录后复制

np.full()
登录后复制
登录后复制

有什么用途?

这三个函数用于创建特定形状且元素值相同的数组。

np.zeros()
登录后复制
登录后复制
登录后复制
登录后复制

创建全0数组,

np.ones()
登录后复制
登录后复制
登录后复制

创建全1数组,

np.full()
登录后复制
登录后复制

可以指定填充的值。

zeros_array = np.zeros((2, 3)) # 创建一个2x3的全0数组 print(zeros_array) # 输出: # [[0. 0. 0.] #  [0. 0. 0.]]  ones_array = np.ones((3, 2)) # 创建一个3x2的全1数组 print(ones_array) # 输出: # [[1. 1.] #  [1. 1.] #  [1. 1.]]  full_array = np.full((2, 2), 7) # 创建一个2x2的数组,所有元素都是7 print(full_array) # 输出: # [[7 7] #  [7 7]]
登录后复制

这些函数在初始化数组时非常有用,尤其是在进行数值计算时。例如,你可以用

np.zeros()
登录后复制
登录后复制
登录后复制
登录后复制

创建一个累加器,然后逐步更新它的值。

如何使用

np.arange()
登录后复制
登录后复制
登录后复制
登录后复制

np.linspace()
登录后复制
登录后复制
登录后复制

创建数值序列数组?

np.arange()
登录后复制
登录后复制
登录后复制
登录后复制

类似于Python的

range()
登录后复制

函数,但它返回的是一个NumPy数组。它可以生成一个等差数列,你需要指定起始值、终止值和步长。

arange_array = np.arange(0, 10, 2) # 从0开始,到10(不包含),步长为2 print(arange_array) # 输出: [0 2 4 6 8]
登录后复制
np.linspace()
登录后复制
登录后复制
登录后复制

则用于生成指定数量的等间隔数值。你需要指定起始值、终止值和元素数量。

linspace_array = np.linspace(0, 1, 5) # 从0到1(包含),生成5个等间隔的数 print(linspace_array) # 输出: [0.   0.25 0.5  0.75 1.  ]
登录后复制
np.arange()
登录后复制
登录后复制
登录后复制
登录后复制

更适合需要精确控制步长的情况,而

np.linspace()
登录后复制
登录后复制
登录后复制

更适合需要精确控制元素数量的情况。

np.linspace
登录后复制

默认包含终止值,可以通过

endpoint=False
登录后复制

来排除终止值,使其行为更像

arange
登录后复制

如何创建随机数数组?

NumPy的

np.random
登录后复制

模块提供了多种生成随机数的函数。

ChatGPT指令大全

python numpy如何创建一个数组_Numpy创建数组的多种方式180

random_array = np.random.rand(2, 3) # 生成一个2x3的数组,元素是0到1之间的随机数 print(random_array) # 输出 (示例): # [[0.123 0.456 0.789] #  [0.987 0.654 0.321]]  randint_array = np.random.randint(0, 10, (3, 3)) # 生成一个3x3的数组,元素是0到9之间的随机整数 print(randint_array) # 输出 (示例): # [[1 2 3] #  [4 5 6] #  [7 8 9]]  normal_array = np.random.normal(0, 1, (2, 2)) # 生成一个2x2的数组,元素服从均值为0,标准差为1的正态分布 print(normal_array) # 输出 (示例): # [[ 0.123 -0.456] #  [-0.789  0.987]]
登录后复制
np.random.rand()
登录后复制

生成均匀分布的随机数,

np.random.randint()
登录后复制

生成随机整数,

np.random.normal()
登录后复制

生成服从正态分布的随机数。 还有其他很多随机数生成函数,可以根据你的需求选择。

如何指定数组的数据类型?

NumPy数组的元素必须是相同类型的。NumPy会自动推断数据类型,但你也可以显式指定。

int_array = np.array([1, 2, 3], dtype=np.int32) print(int_array.dtype) # 输出: int32  float_array = np.array([1, 2, 3], dtype=np.float64) print(float_array.dtype) # 输出: float64  bool_array = np.array([0, 1, 0], dtype=bool) print(bool_array) # 输出: [False  True False]
登录后复制

指定数据类型可以节省内存空间,提高计算效率。例如,如果你的数据都是整数,那么使用

np.int8
登录后复制

np.int16
登录后复制

可能比使用默认的

np.int64
登录后复制

更合适。

如何改有数组的形状?

可以使用

np.reshape()
登录后复制
登录后复制

函数改变数组的形状。

my_array = np.arange(12) print(my_array) # 输出: [ 0  1  2  3  4  5  6  7  8  9 10 11]  reshaped_array = my_array.reshape((3, 4)) # 改变形状为3x4 print(reshaped_array) # 输出: # [[ 0  1  2  3] #  [ 4  5  6  7] #  [ 8  9 10 11]]
登录后复制

注意,

np.reshape()
登录后复制
登录后复制

不会改变原始数组,而是返回一个新的数组。 如果你希望直接修改原始数组,可以使用

array.resize()
登录后复制

方法。但

resize()
登录后复制

会直接修改数组本身,并且如果新的尺寸大于原始尺寸,会用0填充。 另外,

reshape
登录后复制

操作需要保证新数组的元素个数和原数组一致,否则会报错。可以使用

-1
登录后复制

让 numpy 自动计算某个维度的大小。

my_array = np.arange(12) reshaped_array = my_array.reshape((2, -1)) # numpy 自动计算列数 print(reshaped_array) # 输出: # [[ 0  1  2  3  4  5] #  [ 6  7  8  9 10 11]]
登录后复制

如何合并多个数组?

可以使用

np.concatenate()
登录后复制
登录后复制
登录后复制

np.stack()
登录后复制
登录后复制

np.hstack()
登录后复制
登录后复制

np.vstack()
登录后复制
登录后复制

等函数合并数组。

np.concatenate()
登录后复制
登录后复制
登录后复制

可以沿着指定的轴连接数组。

a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6]])  concatenated_array = np.concatenate((a, b), axis=0) # 沿着行(axis=0)连接 print(concatenated_array) # 输出: # [[1 2] #  [3 4] #  [5 6]]  c = np.array([[7, 8], [9, 10]]) concatenated_array = np.concatenate((a, c), axis=1) # 沿着列(axis=1)连接 print(concatenated_array) # 输出: # [[ 1  2  7  8] #  [ 3  4  9 10]]
登录后复制
np.stack()
登录后复制
登录后复制

沿着新的轴连接数组。

a = np.array([1, 2, 3]) b = np.array([4, 5, 6])  stacked_array = np.stack((a, b), axis=0) # 沿着新的行(axis=0)堆叠 print(stacked_array) # 输出: # [[1 2 3] #  [4 5 6]]  stacked_array = np.stack((a, b), axis=1) # 沿着新的列(axis=1)堆叠 print(stacked_array) # 输出: # [[1 4] #  [2 5] #  [3 6]]
登录后复制
np.hstack()
登录后复制
登录后复制

np.vstack()
登录后复制
登录后复制

np.concatenate()
登录后复制
登录后复制
登录后复制

的简化版本,分别用于水平和垂直方向的连接。

a = np.array([1, 2, 3]) b = np.array([4, 5, 6])  hstack_array = np.hstack((a, b)) # 水平方向连接 print(hstack_array) # 输出: [1 2 3 4 5 6]  vstack_array = np.vstack((a, b)) # 垂直方向连接 print(vstack_array) # 输出: # [[1 2 3] #  [4 5 6]]
登录后复制

选择哪种合并方式取决于你希望如何组织数组。

concatenate
登录后复制

最通用,

stack
登录后复制

可以在新的维度上堆叠,而

hstack
登录后复制

vstack
登录后复制

则分别适用于水平和垂直拼接的场景。

以上就是 numpy如何创建一个数组_Numpy创建数组的多种方式的详细内容,更多请关注php中文网其它相关文章!

相关标签:

大家都在看:

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/14719.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部