Python 循环与批量算法

Python 循环与批量算法,python,for-loop,Python,For Loop,我在python中的for循环中遇到了一些问题。我的目标是循环一组数据,并对每个元素执行算术运算。这里有一个例子 import numpy as np X = np.array([[6.3, 7.4, 4.2], [2.6, 7.8, 9.1], [1.7, 3.9, 6.4]]) A = B = np.zeros((len(X), len(X))) # Method One for i in range(len(X)): for j in range(len(X)):

我在python中的for循环中遇到了一些问题。我的目标是循环一组数据,并对每个元素执行算术运算。这里有一个例子

import numpy as np

X = np.array([[6.3, 7.4, 4.2], [2.6, 7.8, 9.1], [1.7, 3.9, 6.4]])
A = B = np.zeros((len(X), len(X)))

# Method One
for i in range(len(X)):
    for j in range(len(X)):
        A[i][j] = X[i][j] + 2 * 5
        B[i][j] = X[i][j] + 8

# Method Two
A2 = X + 2 * 5
B2 = X + 8

print "A"
print A
print A2
print A == A2
print "B"
print B
print B2
print B == B2
方法一: 这里的想法是我会循环 通过每个元素

方法二: 这样就可以一次完成所有的工作

我不只是使用方法二的原因是,对于某些值,我希望执行不同的操作,所以我的想法是使用for循环,并在执行操作之前检查每个值。我只是很困惑为什么这两种方法会产生不同的结果

如果我切换线路9/10,那么结果
是翻转的。

此行不构成两个单独的数组A和B,它构成一个数组并构成两个名称A和B,请参考该数组:

A = B = np.zeros((len(X), len(X)))
例如:

>>> A = B = np.zeros((3,3))
>>> A is B
True
>>> A[0,0] = 99
>>> A
array([[ 99.,   0.,   0.],
       [  0.,   0.,   0.],
       [  0.,   0.,   0.]])
>>> B
array([[ 99.,   0.,   0.],
       [  0.,   0.,   0.],
       [  0.,   0.,   0.]])
因此,在这些方面:

    A[i][j] = X[i][j] + 2 * 5
    B[i][j] = X[i][j] + 8
你还不如写信来

    A[i][j] = X[i][j] + 2 * 5
    A[i][j] = X[i][j] + 8

这就是为什么秩序很重要;它们都在设置同一数组的同一单元格,因此最后一个单元格就是您看到的单元格。

这一行并没有组成两个单独的数组A和B,它组成一个数组,并组成两个名称,A和B,请参考该数组:

A = B = np.zeros((len(X), len(X)))
例如:

>>> A = B = np.zeros((3,3))
>>> A is B
True
>>> A[0,0] = 99
>>> A
array([[ 99.,   0.,   0.],
       [  0.,   0.,   0.],
       [  0.,   0.,   0.]])
>>> B
array([[ 99.,   0.,   0.],
       [  0.,   0.,   0.],
       [  0.,   0.,   0.]])
因此,在这些方面:

    A[i][j] = X[i][j] + 2 * 5
    B[i][j] = X[i][j] + 8
你还不如写信来

    A[i][j] = X[i][j] + 2 * 5
    A[i][j] = X[i][j] + 8

这就是为什么秩序很重要;它们都在设置同一数组的同一单元格,因此最后一个单元格就是您看到的单元格。

您需要创建两个数组:而不是

A = B = np.zeros((len(X), len(X)))

你正在创建两个指向同一个对象的变量-所以不管你最后做了什么,这就是你得到的。。。在Python中,表达式

A = B

意思是从现在开始,当我说“A”时,我的意思是“B”。当您来自(比如)Matlab时会感到困惑…

您需要创建两个数组:而不是

A = B = np.zeros((len(X), len(X)))

你正在创建两个指向同一个对象的变量-所以不管你最后做了什么,这就是你得到的。。。在Python中,表达式

A = B

意思是从现在开始,当我说“A”时,我的意思是“B”。当你来自,比如说,Matlab…

你所说的11/12行是什么意思?第11行和第12行是空行,第二种方法。对不起,这是打字错误。如果你切换for循环中的操作顺序,答案就会改变。你说的11/12行是什么意思?第11行和第12行是空行,第二种方法。对不起,这是打字错误。如果切换for循环中的操作顺序,则答案会发生变化。