Arrayfire python 行加法和乘法
Arrayfire python rowwise addition and multiplication
我正在尝试通过翻译一些矢量化的 numpy 代码来学习 Arrayfire 习语。
例如,这是numpy中有效的行加法和乘法,
>>> a = np.array([1,2,3])
>>> a
array([1, 2, 3])
>>> b = np.arange(9).reshape((3, 3))
>>> b
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> a + b
array([[ 1, 3, 5],
[ 4, 6, 8],
[ 7, 9, 11]])
>>> a * b
array([[ 0, 2, 6],
[ 3, 8, 15],
[ 6, 14, 24]])
arrayfire 中的所有数组都必须是相同的形状吗?这会产生错误。
>>> a = af.from_ndarray(a)
>>> b = af.from_ndarray(b)
>>> a + b
Invalid dimension for argument 1
Expected: ldims == rdims
>>> a * b
Invalid dimension for argument 1
Expected: ldims == rdims
根据@pradeep 的回答,您可以使用 tile 执行此操作,直到添加为功能请求。
>>> a = np.array([1,2,3])
>>> a = af.tile(af.transpose(af.from_ndarray(a)),3,1)
>>> af.display(a)
[3 3 1 1]
1 2 3
1 2 3
1 2 3
>>> b = np.arange(9).reshape((3, 3))
>>> b = af.from_ndarray(b)
>>> af.display(a + b)
[3 3 1 1]
1 3 5
4 6 8
7 9 11
>>> af.display(a * b)
[3 3 1 1]
0 2 6
3 8 15
6 14 24
我正在尝试通过翻译一些矢量化的 numpy 代码来学习 Arrayfire 习语。
例如,这是numpy中有效的行加法和乘法,
>>> a = np.array([1,2,3])
>>> a
array([1, 2, 3])
>>> b = np.arange(9).reshape((3, 3))
>>> b
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> a + b
array([[ 1, 3, 5],
[ 4, 6, 8],
[ 7, 9, 11]])
>>> a * b
array([[ 0, 2, 6],
[ 3, 8, 15],
[ 6, 14, 24]])
arrayfire 中的所有数组都必须是相同的形状吗?这会产生错误。
>>> a = af.from_ndarray(a)
>>> b = af.from_ndarray(b)
>>> a + b
Invalid dimension for argument 1
Expected: ldims == rdims
>>> a * b
Invalid dimension for argument 1
Expected: ldims == rdims
根据@pradeep 的回答,您可以使用 tile 执行此操作,直到添加为功能请求。
>>> a = np.array([1,2,3])
>>> a = af.tile(af.transpose(af.from_ndarray(a)),3,1)
>>> af.display(a)
[3 3 1 1]
1 2 3
1 2 3
1 2 3
>>> b = np.arange(9).reshape((3, 3))
>>> b = af.from_ndarray(b)
>>> af.display(a + b)
[3 3 1 1]
1 3 5
4 6 8
7 9 11
>>> af.display(a * b)
[3 3 1 1]
0 2 6
3 8 15
6 14 24