为了账号安全,请及时绑定邮箱和手机立即绑定

如何为数组正确使用 numpy.c_

如何为数组正确使用 numpy.c_

慕的地6264312 2021-12-17 16:49:27
我有一个要矢量化的函数。在函数内部,我有以下代码。A = np.c_[xdata, ydata, np.ones(len(zdata))]其中 x_data, y_data, z_data 都是 1x5 数组,例如。[1,2,3,4,5]。A 的结果输出将是array([[1.90155189, 1.64412979, 1.        ],       [2.44148892, 1.73851717, 1.        ],       [1.65259189, 2.10693759, 1.        ],       [2.52045732, 2.30939049, 1.        ],       [1.53516213, 2.39788003, 1.        ]])我想将函数的这一部分转换为处理 x、y、z 的输入数组(例如 1000 行 5 列)。我天真地试图将数组输入到这个函数中,第一行的输出如下。array([1.90155189, 2.44148892, 1.65259189, 2.52045732, 1.53516213,       1.64412979, 1.73851717, 2.10693759, 2.30939049, 2.39788003,       1.        ])以下是第一个结果的输入示例:x=[1.90155189 2.44148892 1.65259189 2.52045732 1.53516213]y=[1.64412979 1.73851717 2.10693759 2.30939049 2.39788003]z=[0.23273446 0.57301046 0.89755946 0.07169598 0.41394575]假设现在我有第二种方法的以下数据:x_array = [[1.90155189 2.44148892 1.65259189 2.52045732 1.53516213],           [1.90155189 2.44148892 1.65259189 2.52045732 1.53516213],           [1.90155189 2.44148892 1.65259189 2.52045732 1.53516213]]y_array = [[1.64412979 1.73851717 2.10693759 2.30939049 2.39788003],           [1.64412979 1.73851717 2.10693759 2.30939049 2.39788003],           [1.64412979 1.73851717 2.10693759 2.30939049 2.39788003]]z_array = [[0.23273446 0.57301046 0.89755946 0.07169598 0.41394575],           [0.23273446 0.57301046 0.89755946 0.07169598 0.41394575],           [0.23273446 0.57301046 0.89755946 0.07169598 0.41394575]]
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

你可以使用这个:


编辑:由于@hpaulj 的评论,在下一行评论,添加了下一行。

# new_A = np.stack((x,y,np.ones_like(z)), axis=1).swapaxes(1,2)

new_A = np.stack((x,y,np.ones_like(z)), axis=2)

测试一下:


THOUSAND = 6

x = np.random.randint(1,5,size=(THOUSAND,5))

y = np.random.randint(1,5,size=(THOUSAND,5))

z = np.random.randint(1,5,size=(THOUSAND,5))


print (x)

print (y)

print (z)


new_A = np.stack((x,y,np.ones_like(z)), axis=1).swapaxes(1,2)

print (new_A)

输出:


[[1 2 2 1 1]      # print(x)

 [4 4 4 4 4]

 [1 2 1 3 3]

 [2 3 1 4 4]

 [1 1 4 1 4]

 [4 1 3 3 2]]

[[2 2 3 4 4]      # print(y)

 [1 1 4 2 1]

 [3 3 1 1 2]

 [1 1 2 1 3]

 [3 2 1 4 3]

 [4 4 1 3 2]]

[[3 4 3 2 2]      # print(z)

 [4 2 4 3 3]

 [3 3 4 1 4]

 [4 3 3 3 1]

 [4 1 1 3 3]

 [4 1 4 3 3]]


# new_A output


[[[1 2 1]      # print(new_A)

  [2 2 1]

  [2 3 1]

  [1 4 1]

  [1 4 1]]


 [[4 1 1]

  [4 1 1]

  [4 4 1]

  [4 2 1]

  [4 1 1]]


 [[1 3 1]

  [2 3 1]

  [1 1 1]

  [3 1 1]

  [3 2 1]]


 [[2 1 1]

  [3 1 1]

  [1 2 1]

  [4 1 1]

  [4 3 1]]


 [[1 3 1]

  [1 2 1]

  [4 1 1]

  [1 4 1]

  [4 3 1]]


 [[4 4 1]

  [1 4 1]

  [3 1 1]

  [3 3 1]

  [2 2 1]]]


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信