我正在创建这个数组:
>>> np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])
array([[ 0, 1, 2, 3, 4, 5],
[10, 11, 12, 13, 14, 15],
[20, 21, 22, 23, 24, 25],
[30, 31, 32, 33, 34, 35],
[40, 41, 42, 43, 44, 45],
[50, 51, 52, 53, 54, 55]])
我正在输入所有元素
答案 0 :(得分:4)
嗯,如果你已经不介意使用辅助列表,你总是可以使用列表理解:
>>> np.array([list(range(i, i + 6)) for i in range(0, 55, 10)])
array([[ 0, 1, 2, 3, 4, 5],
[10, 11, 12, 13, 14, 15],
[20, 21, 22, 23, 24, 25],
[30, 31, 32, 33, 34, 35],
[40, 41, 42, 43, 44, 45],
[50, 51, 52, 53, 54, 55]])
这是使用广播的numpy
方式:
>>> np.arange(0, 51, 10).reshape(-1, 1) + np.arange(6)
array([[ 0, 1, 2, 3, 4, 5],
[10, 11, 12, 13, 14, 15],
[20, 21, 22, 23, 24, 25],
[30, 31, 32, 33, 34, 35],
[40, 41, 42, 43, 44, 45],
[50, 51, 52, 53, 54, 55]])
这种方法,特别是对于较大的示例,将更快,并且需要更少的辅助存储。
答案 1 :(得分:3)
您可以使用mgrid
类实例。
[[ 0 1 2 3 4 5]
[10 11 12 13 14 15]
[20 21 22 23 24 25]
[30 31 32 33 34 35]
[40 41 42 43 44 45]
[50 51 52 53 54 55]]
<强>输出强>
sum
一个小变化是使用Numpy a = np.sum(np.mgrid[:60:10, :6], axis=0)
函数来执行两个数组的添加:
+
但是,正如user2357112在评论中提到的那样,使用ogrid
运算符进行添加而不是调用函数会更有效。
他还提到我们可以使用y
来创建列和行数组,这会占用x
和import numpy as np
y, x = np.ogrid[:60:10, :6]
a = y + x
print(y, x, a, sep='\n\n')
更少的内存。而且它也更快。
[10]
[20]
[30]
[40]
[50]]
[[0 1 2 3 4 5]]
[[ 0 1 2 3 4 5]
[10 11 12 13 14 15]
[20 21 22 23 24 25]
[30 31 32 33 34 35]
[40 41 42 43 44 45]
[50 51 52 53 54 55]]
输出
{{1}}
答案 2 :(得分:0)
另一个选择
n=100
i=1
while [ $i -lt $n ]
do
echo $i
i=$(( $i+1 ))
done
输出:
np.array([np.arange(i, i+6) for i in range(56)[::10]])