如何在numpy中创建矩阵以便像这样调用?

时间:2015-07-14 05:12:31

标签: python numpy

我正在尝试学习Gradient从互联网下降,在代码中它有类似的东西。

for i in range(len(points)):
   x = points[i].x
   y = points[i].y

但是,我通过

生成我自己的数据集
x = np.random.randint(10000, size=100000000)
y = x * 0.10

如何使用pointsx创建y以符合代码?

2 个答案:

答案 0 :(得分:3)

使用此:

x = np.random.randint(10000, size=100000000)
y = x * 0.10
np.column_stack((x,y))

这将使用numpy优化速度。更多here

并将代码更改为此

for i in range(len(points)):
   x = points[i][0]
   y = points[i][1]

如果您希望.x.y能够正常工作: 使用课程:

class point:
    def __init__(self,x,y):
        self.x=x
        self.y=y
#[OR]

import collections
Point = collections.namedtuple('Point', ['x', 'y'])


#and then

for i in range(len(x)):
    points.append(point(x[i],y[i]))

这会执行较慢的

答案 1 :(得分:0)

我猜它是一堂课。您可以按如下方式创建一个虚拟课程

import numpy as np
class p:
    def __init__(self,x,y):
        self.x=x
        self.y=y


points = []
x = np.random.randint(10000, size=100000000)
y = x * 0.10
for i in range(len(x)):
    points.append(p(x[i],y[i]))

for i in range(len(points)):
   x = points[i].x
   y = points[i].y

但这可能效率很低。但是如果你想让相同的界面工作,这应该足够了。