【问题标题】:How to create matrices with different names inside a for loop [duplicate]如何在for循环中创建具有不同名称的矩阵[重复]
【发布时间】:2016-05-02 17:59:37
【问题描述】:

我想创建矩阵 1x5:matriz1matriz2matriz3,其值为 i + j,但我的代码不起作用。有人可以帮我吗?

import numpy as np

for i in range(3):
    name= 'matriz%d'%i
    name= np.zeros((1,5))

for i in range(3):
    name2 = 'matriz%d'%i
    for j in range(5):
        name2[j]=i+j

for i in range(3):
    name3 = 'matriz%d'%i
    print(name3)

【问题讨论】:

  • 如果您认为需要动态选择变量名,那么您确实需要使用数据结构。也许是一个数组列表或一个 3D 数组,而不是几个 2D 数组。
  • 谢谢,我认为这是个好主意。

标签: python numpy matrix


【解决方案1】:

在 Python 中,这两行只是将两个不同的对象分配给变量 name

name= 'matriz%d'%i        # assign a string
name= np.zeros((1,5))     # assign an array

其他一些语言有一种机制可以让你使用字符串作为变量名,例如$name = ...。但在 Python 中,这很尴尬,如果不是不可能的话。相反,您应该使用结构,例如字典。

例如

adict = {}
for i in range(3):
   name= 'matriz%d'%i
   adict[name] = np.zeros((1,5))

然后您可以通过字典引用访问此数组,例如:adict['matriz3']

您还可以使用列表,并通过数字或列表迭代访问单个数组:

alist = [np.zeros((1,5)) for i in range(3)]

for i,A in enumerate(alist):  # iteration with index
    A[:] = i+np.arange(5)
for a in alist:   # simple iteration
    print(a)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    相关资源
    最近更新 更多