【发布时间】:2021-08-23 18:33:35
【问题描述】:
这里是 numpy 代码:
import numpy as np
arr1 = np.array([[0, 1, np.nan], [3, np.nan, 5], [np.nan, 7, 8]])
arr2 = np.array([[np.nan, 7, 6], [5, np.nan, 3], [2, 1, np.nan]])
print(arr1)
print(arr2)
arr1 是: [[ 0. 1. 南] [ 3. 南 5.] [南 7. 8.]]]
arr2 是: [[南 7. 6.] [ 5. 南 3.] [2. 1. 南]]
然后我做:
idx1 = np.isnan(arr1)
idx2 = np.isnan(arr2)
idx = idx1 | idx2
arr1[idx] = -1
arr2[idx] = -1
print(arr1)
print(arr2)
arr1 变为: [[-1。 1.-1.] [3.-1。 5.] [-1。 7. -1.]]
arr2 变为: [[-1。 7.-1.] [5.-1。 3.] [-1。 1.-1.]]
然后我想用 scala 和 ND4j 重写这段代码:
import org.nd4j.linalg.factory.Nd4j
val arr1 = Nd4j.create(Array(Array(0, 1, Double.NaN), Array(3, Double.NaN, 5), Array(Double.NaN, 7, 8)))
val arr2 = Nd4j.create(Array(Array(Double.NaN, 7, 6), Array(5, Double.NaN, 3), Array(2, 1, Double.NaN)))
println(arr1)
println(arr2)
val idx1 = arr1.isNaN
val idx2 = arr2.isNaN
val idx = idx1 | idx2 // error
arr1.putWhereWithMask(idx, -1)
arr2.putWhereWithMask(idx, -1)
println(arr1)
println(arr2)
此代码未编译。如何修改它?谢谢!
【问题讨论】: