在python中每次迭代for循环后为数据创建新列

在python中每次迭代for循环后为数据创建新列,python,numpy,Python,Numpy,使用下一个代码,我想把结果放在不同m值的列中 import numpy as np for m in np.arange(0, 4, 1): for n in np.arange(1, 4, 1): coef = 2*m/n print coef 其结果是: 0 0 0 2 1 0 4 2 1 6 3 2 我想要这个 0 0 0 2 1 0 4 2 1 6 3 2 或者直接获取列,该列是行的值之和 0 + 0 + 0 = 0 2 + 1 + 0 = 3

使用下一个代码,我想把结果放在不同m值的列中

import numpy as np 
for m in np.arange(0, 4, 1):
   for n in np.arange(1, 4, 1):
       coef = 2*m/n
       print coef
其结果是:

0
0
0
2
1
0
4
2
1
6
3
2
我想要这个

0 0 0
2 1 0
4 2 1
6 3 2
或者直接获取列,该列是行的值之和

0 + 0 + 0 = 0
2 + 1 + 0 = 3
4 + 2 + 1 = 7
6 + 3 + 2 = 11

在打印后添加逗号,这样我们就不会在内部循环外添加换行符和另一个打印来分隔每一行:

import numpy as np
for m in np.arange(0, 4, 1):
   for n in np.arange(1, 4, 1):
       coef = 2*m/n
       print coef,
   print 
这将给你:

0 0 0
2 1 0
4 2 1
6 3 2
0
3
7
11
或使用打印功能:

from __future__ import print_function


import numpy as np

for m in np.arange(0, 4, 1):
    print(*(2 * m / n for n in np.arange(1, 4, 1)))
要获得和,我们可以使用内置的和函数,在内部循环中使用:

import numpy as np

for m in np.arange(0, 4, 1):
    print(sum(2 * m / n for n in np.arange(1, 4, 1)))
这将给你:

0 0 0
2 1 0
4 2 1
6 3 2
0
3
7
11
为完整起见,第一个示例的等效打印功能代码为设置
end=“”


在打印后添加逗号,这样我们就不会在内部循环外添加换行符和另一个打印来分隔每一行:

import numpy as np
for m in np.arange(0, 4, 1):
   for n in np.arange(1, 4, 1):
       coef = 2*m/n
       print coef,
   print 
这将给你:

0 0 0
2 1 0
4 2 1
6 3 2
0
3
7
11
或使用打印功能:

from __future__ import print_function


import numpy as np

for m in np.arange(0, 4, 1):
    print(*(2 * m / n for n in np.arange(1, 4, 1)))
要获得和,我们可以使用内置的和函数,在内部循环中使用:

import numpy as np

for m in np.arange(0, 4, 1):
    print(sum(2 * m / n for n in np.arange(1, 4, 1)))
这将给你:

0 0 0
2 1 0
4 2 1
6 3 2
0
3
7
11
为完整起见,第一个示例的等效打印功能代码为设置
end=“”


正如我正确理解的,您希望创建一个新数组,其中的列与您指定的列相同

import numpy as np 
a = np.zeros([3,4])
for m in np.arange(0, 4, 1):
    col = []
    for n in np.arange(1, 4, 1):
        coef = int(2*m/n)
        col.append(coef)
    a[:, int(m)] = col

print(a.T)

正如我正确理解的,您希望创建一个新数组,其中的列与您指定的列相同

import numpy as np 
a = np.zeros([3,4])
for m in np.arange(0, 4, 1):
    col = []
    for n in np.arange(1, 4, 1):
        coef = int(2*m/n)
        col.append(coef)
    a[:, int(m)] = col

print(a.T)

使用循环所做的工作与使用
范围
一样有效。无需使用
numpy

但是如果这是一个学习numpy的练习,我会建议一个不同的方法

直接从范围创建数组<代码>/是整数除法

In [99]: A=2*np.arange(4)[:,None]//np.arange(1,4)

In [100]: A
Out[100]: 
array([[0, 0, 0],
       [2, 1, 0],
       [4, 2, 1],
       [6, 3, 2]], dtype=int32)
可以使用数组方法跨列求和:

In [101]: A.sum(axis=1)
Out[101]: array([ 0,  3,  7, 11], dtype=int32)
要获得好的格式(无括号等),请创建行格式字符串:

In [102]: fmt = '%d + %d + %d = %d'               

In [103]: for row in A:                           
    print(fmt%(tuple(row)+(row.sum(),))) 
   .....:     
0 + 0 + 0 = 0
2 + 1 + 0 = 3
4 + 2 + 1 = 7
6 + 3 + 2 = 11
(打印的功能形式在Python3中是正常的,在2.7中可用)

我可以使用它的一个变体,通过
np.savetxt
将其写入文件

In [104]: A.sum(axis=1,keepdims=True)  # sum in column array shape
Out[104]: 
array([[ 0],
       [ 3],
       [ 7],
       [11]], dtype=int32)

In [105]: A1 = np.concatenate((A, A.sum(axis=1,keepdims=True)),axis=1)

In [106]: A1     # the values and sum in one array
Out[106]: 
array([[ 0,  0,  0,  0],
       [ 2,  1,  0,  3],
       [ 4,  2,  1,  7],
       [ 6,  3,  2, 11]], dtype=int32)

In [107]: np.savetxt('test.txt',A1,fmt=fmt)

In [108]: cat test.txt    # look at the resulting file
0 + 0 + 0 = 0
2 + 1 + 0 = 3
4 + 2 + 1 = 7
6 + 3 + 2 = 11
不带numpy的Python2.7版本:

>>> for m in range(4):
...     row = [2*m/n for n in range(1,4)]
...     fmt = '%d + %d + %d = %d'
...     print fmt%(tuple(row)+(sum(row),))
... 
0 + 0 + 0 = 0
2 + 1 + 0 = 3
4 + 2 + 1 = 7
6 + 3 + 2 = 11

使用循环所做的工作与使用
范围
一样有效。无需使用
numpy

但是如果这是一个学习numpy的练习,我会建议一个不同的方法

直接从范围创建数组<代码>/是整数除法

In [99]: A=2*np.arange(4)[:,None]//np.arange(1,4)

In [100]: A
Out[100]: 
array([[0, 0, 0],
       [2, 1, 0],
       [4, 2, 1],
       [6, 3, 2]], dtype=int32)
可以使用数组方法跨列求和:

In [101]: A.sum(axis=1)
Out[101]: array([ 0,  3,  7, 11], dtype=int32)
要获得好的格式(无括号等),请创建行格式字符串:

In [102]: fmt = '%d + %d + %d = %d'               

In [103]: for row in A:                           
    print(fmt%(tuple(row)+(row.sum(),))) 
   .....:     
0 + 0 + 0 = 0
2 + 1 + 0 = 3
4 + 2 + 1 = 7
6 + 3 + 2 = 11
(打印的功能形式在Python3中是正常的,在2.7中可用)

我可以使用它的一个变体,通过
np.savetxt
将其写入文件

In [104]: A.sum(axis=1,keepdims=True)  # sum in column array shape
Out[104]: 
array([[ 0],
       [ 3],
       [ 7],
       [11]], dtype=int32)

In [105]: A1 = np.concatenate((A, A.sum(axis=1,keepdims=True)),axis=1)

In [106]: A1     # the values and sum in one array
Out[106]: 
array([[ 0,  0,  0,  0],
       [ 2,  1,  0,  3],
       [ 4,  2,  1,  7],
       [ 6,  3,  2, 11]], dtype=int32)

In [107]: np.savetxt('test.txt',A1,fmt=fmt)

In [108]: cat test.txt    # look at the resulting file
0 + 0 + 0 = 0
2 + 1 + 0 = 3
4 + 2 + 1 = 7
6 + 3 + 2 = 11
不带numpy的Python2.7版本:

>>> for m in range(4):
...     row = [2*m/n for n in range(1,4)]
...     fmt = '%d + %d + %d = %d'
...     print fmt%(tuple(row)+(sum(row),))
... 
0 + 0 + 0 = 0
2 + 1 + 0 = 3
4 + 2 + 1 = 7
6 + 3 + 2 = 11