首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2维数组中的Python Numpy索引

2维数组中的Python Numpy索引
EN

Stack Overflow用户
提问于 2016-05-20 02:00:44
回答 2查看 314关注 0票数 0

我是一个老Codger和新的Python,有一个问题,理解如何通过一个2维数组索引,即使我读了很多教程,他们似乎都使用整数,所以也许我错过了一些东西。

在VB中我可以写

代码语言:javascript
复制
Sub testindex()
Dim mymatrix(10, 10)
For i = 1 To 10
For j = 1 To 10
mymatrix(i, j) = i * j
Debug.Print mymatrix(i, j) & " ,";
Next j
Next i
End Sub

我找不到Python的等价物。如何才能达到预期的效果?

EN

回答 2

Stack Overflow用户

发布于 2016-05-20 02:58:12

最直译的是

代码语言:javascript
复制
mymatrix=np.zeros((10,10),int)

for i in range(10):
   for j in range(10):
      mymatrix[i,j]=i*j        

In [637]: print(mymatrix)
[[ 0  0  0  0  0  0  0  0  0  0]
 [ 0  1  2  3  4  5  6  7  8  9]
 [ 0  2  4  6  8 10 12 14 16 18]
 ...
 [ 0  8 16 24 32 40 48 56 64 72]
 [ 0  9 18 27 36 45 54 63 72 81]]

或者您可能想要使用

代码语言:javascript
复制
 mymatrix[i,j]=(i+1)*(j+1)

生产

代码语言:javascript
复制
array([[  1,   2,   3,   4,   5,   6,   7,   8,   9,  10],
       [  2,   4,   6,   8,  10,  12,  14,  16,  18,  20],
       ...
       [  9,  18,  27,  36,  45,  54,  63,  72,  81,  90],
       [ 10,  20,  30,  40,  50,  60,  70,  80,  90, 100]])

但在numpy中有更快、更好的方法来做到这一点。

一乘以行向量乘以列一:

代码语言:javascript
复制
np.arange(1,11)[:,None]*np.arange(1,11)[None,:]
票数 0
EN

Stack Overflow用户

发布于 2016-05-20 03:34:45

获得你想要的矩阵的一种干净的方法是向量乘法。在您的示例中,它将是:

代码语言:javascript
复制
import numpy as np

a = np.arange(1, 11) # create range [1, 10] (with shape (10, )
b = np.expand_dims(a, 2) # ensure you have shape (10, 1) - a proper vector
c = b*b.T

所以

代码语言:javascript
复制
print(c)

输出:

代码语言:javascript
复制
[[  1   2   3   4   5   6   7   8   9  10]
[  2   4   6   8  10  12  14  16  18  20]
[  3   6   9  12  15  18  21  24  27  30]
[  4   8  12  16  20  24  28  32  36  40]
[  5  10  15  20  25  30  35  40  45  50]
[  6  12  18  24  30  36  42  48  54  60]
[  7  14  21  28  35  42  49  56  63  70]
[  8  16  24  32  40  48  56  64  72  80]
[  9  18  27  36  45  54  63  72  81  90]
[ 10  20  30  40  50  60  70  80  90 100]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37330843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档